{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "accelerator": "GPU",
    "colab": {
      "name": "MH_Multiclass_849.ipynb",
      "provenance": [],
      "collapsed_sections": [],
      "machine_shape": "hm"
    },
    "kernelspec": {
      "display_name": "Python 3",
      "language": "python",
      "name": "python3"
    },
    "language_info": {
      "codemirror_mode": {
        "name": "ipython",
        "version": 3
      },
      "file_extension": ".py",
      "mimetype": "text/x-python",
      "name": "python",
      "nbconvert_exporter": "python",
      "pygments_lexer": "ipython3",
      "version": "3.8.3"
    },
    "widgets": {
      "application/vnd.jupyter.widget-state+json": {
        "d1b4a7765abe4a609e7393cf2d3e8950": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "HBoxModel",
          "state": {
            "_view_name": "HBoxView",
            "_dom_classes": [],
            "_model_name": "HBoxModel",
            "_view_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_view_count": null,
            "_view_module_version": "1.5.0",
            "box_style": "",
            "layout": "IPY_MODEL_bf7d32550dfc473db5629330a0338e2d",
            "_model_module": "@jupyter-widgets/controls",
            "children": [
              "IPY_MODEL_37b5e270f78a49abafbef17bd5939f19",
              "IPY_MODEL_396cd56409ba4319a624bc08fd062575"
            ]
          }
        },
        "bf7d32550dfc473db5629330a0338e2d": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "state": {
            "_view_name": "LayoutView",
            "grid_template_rows": null,
            "right": null,
            "justify_content": null,
            "_view_module": "@jupyter-widgets/base",
            "overflow": null,
            "_model_module_version": "1.2.0",
            "_view_count": null,
            "flex_flow": null,
            "width": null,
            "min_width": null,
            "border": null,
            "align_items": null,
            "bottom": null,
            "_model_module": "@jupyter-widgets/base",
            "top": null,
            "grid_column": null,
            "overflow_y": null,
            "overflow_x": null,
            "grid_auto_flow": null,
            "grid_area": null,
            "grid_template_columns": null,
            "flex": null,
            "_model_name": "LayoutModel",
            "justify_items": null,
            "grid_row": null,
            "max_height": null,
            "align_content": null,
            "visibility": null,
            "align_self": null,
            "height": null,
            "min_height": null,
            "padding": null,
            "grid_auto_rows": null,
            "grid_gap": null,
            "max_width": null,
            "order": null,
            "_view_module_version": "1.2.0",
            "grid_template_areas": null,
            "object_position": null,
            "object_fit": null,
            "grid_auto_columns": null,
            "margin": null,
            "display": null,
            "left": null
          }
        },
        "37b5e270f78a49abafbef17bd5939f19": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "FloatProgressModel",
          "state": {
            "_view_name": "ProgressView",
            "style": "IPY_MODEL_7cf4749da72c4fa08604983ec36c8f99",
            "_dom_classes": [],
            "description": "Downloading: 100%",
            "_model_name": "FloatProgressModel",
            "bar_style": "success",
            "max": 898823,
            "_view_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "value": 898823,
            "_view_count": null,
            "_view_module_version": "1.5.0",
            "orientation": "horizontal",
            "min": 0,
            "description_tooltip": null,
            "_model_module": "@jupyter-widgets/controls",
            "layout": "IPY_MODEL_c64a5a2b488f4a04a008dc51b16693f2"
          }
        },
        "396cd56409ba4319a624bc08fd062575": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "HTMLModel",
          "state": {
            "_view_name": "HTMLView",
            "style": "IPY_MODEL_20267910ff90454cb86fc71363101acc",
            "_dom_classes": [],
            "description": "",
            "_model_name": "HTMLModel",
            "placeholder": "​",
            "_view_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "value": " 899k/899k [00:01&lt;00:00, 545kB/s]",
            "_view_count": null,
            "_view_module_version": "1.5.0",
            "description_tooltip": null,
            "_model_module": "@jupyter-widgets/controls",
            "layout": "IPY_MODEL_3c1fc76bfbf6471db47e1fb993349cac"
          }
        },
        "7cf4749da72c4fa08604983ec36c8f99": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "ProgressStyleModel",
          "state": {
            "_view_name": "StyleView",
            "_model_name": "ProgressStyleModel",
            "description_width": "initial",
            "_view_module": "@jupyter-widgets/base",
            "_model_module_version": "1.5.0",
            "_view_count": null,
            "_view_module_version": "1.2.0",
            "bar_color": null,
            "_model_module": "@jupyter-widgets/controls"
          }
        },
        "c64a5a2b488f4a04a008dc51b16693f2": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "state": {
            "_view_name": "LayoutView",
            "grid_template_rows": null,
            "right": null,
            "justify_content": null,
            "_view_module": "@jupyter-widgets/base",
            "overflow": null,
            "_model_module_version": "1.2.0",
            "_view_count": null,
            "flex_flow": null,
            "width": null,
            "min_width": null,
            "border": null,
            "align_items": null,
            "bottom": null,
            "_model_module": "@jupyter-widgets/base",
            "top": null,
            "grid_column": null,
            "overflow_y": null,
            "overflow_x": null,
            "grid_auto_flow": null,
            "grid_area": null,
            "grid_template_columns": null,
            "flex": null,
            "_model_name": "LayoutModel",
            "justify_items": null,
            "grid_row": null,
            "max_height": null,
            "align_content": null,
            "visibility": null,
            "align_self": null,
            "height": null,
            "min_height": null,
            "padding": null,
            "grid_auto_rows": null,
            "grid_gap": null,
            "max_width": null,
            "order": null,
            "_view_module_version": "1.2.0",
            "grid_template_areas": null,
            "object_position": null,
            "object_fit": null,
            "grid_auto_columns": null,
            "margin": null,
            "display": null,
            "left": null
          }
        },
        "20267910ff90454cb86fc71363101acc": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_view_name": "StyleView",
            "_model_name": "DescriptionStyleModel",
            "description_width": "",
            "_view_module": "@jupyter-widgets/base",
            "_model_module_version": "1.5.0",
            "_view_count": null,
            "_view_module_version": "1.2.0",
            "_model_module": "@jupyter-widgets/controls"
          }
        },
        "3c1fc76bfbf6471db47e1fb993349cac": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "state": {
            "_view_name": "LayoutView",
            "grid_template_rows": null,
            "right": null,
            "justify_content": null,
            "_view_module": "@jupyter-widgets/base",
            "overflow": null,
            "_model_module_version": "1.2.0",
            "_view_count": null,
            "flex_flow": null,
            "width": null,
            "min_width": null,
            "border": null,
            "align_items": null,
            "bottom": null,
            "_model_module": "@jupyter-widgets/base",
            "top": null,
            "grid_column": null,
            "overflow_y": null,
            "overflow_x": null,
            "grid_auto_flow": null,
            "grid_area": null,
            "grid_template_columns": null,
            "flex": null,
            "_model_name": "LayoutModel",
            "justify_items": null,
            "grid_row": null,
            "max_height": null,
            "align_content": null,
            "visibility": null,
            "align_self": null,
            "height": null,
            "min_height": null,
            "padding": null,
            "grid_auto_rows": null,
            "grid_gap": null,
            "max_width": null,
            "order": null,
            "_view_module_version": "1.2.0",
            "grid_template_areas": null,
            "object_position": null,
            "object_fit": null,
            "grid_auto_columns": null,
            "margin": null,
            "display": null,
            "left": null
          }
        },
        "56fe0b30136f44359d42c65fa56df87b": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "HBoxModel",
          "state": {
            "_view_name": "HBoxView",
            "_dom_classes": [],
            "_model_name": "HBoxModel",
            "_view_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_view_count": null,
            "_view_module_version": "1.5.0",
            "box_style": "",
            "layout": "IPY_MODEL_96bd307ed1d44f41bdca050559aca45a",
            "_model_module": "@jupyter-widgets/controls",
            "children": [
              "IPY_MODEL_33322e3e3ea04958a87d878e40da97e8",
              "IPY_MODEL_d0dc1495ef034ea884b1c0b8196bccab"
            ]
          }
        },
        "96bd307ed1d44f41bdca050559aca45a": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "state": {
            "_view_name": "LayoutView",
            "grid_template_rows": null,
            "right": null,
            "justify_content": null,
            "_view_module": "@jupyter-widgets/base",
            "overflow": null,
            "_model_module_version": "1.2.0",
            "_view_count": null,
            "flex_flow": null,
            "width": null,
            "min_width": null,
            "border": null,
            "align_items": null,
            "bottom": null,
            "_model_module": "@jupyter-widgets/base",
            "top": null,
            "grid_column": null,
            "overflow_y": null,
            "overflow_x": null,
            "grid_auto_flow": null,
            "grid_area": null,
            "grid_template_columns": null,
            "flex": null,
            "_model_name": "LayoutModel",
            "justify_items": null,
            "grid_row": null,
            "max_height": null,
            "align_content": null,
            "visibility": null,
            "align_self": null,
            "height": null,
            "min_height": null,
            "padding": null,
            "grid_auto_rows": null,
            "grid_gap": null,
            "max_width": null,
            "order": null,
            "_view_module_version": "1.2.0",
            "grid_template_areas": null,
            "object_position": null,
            "object_fit": null,
            "grid_auto_columns": null,
            "margin": null,
            "display": null,
            "left": null
          }
        },
        "33322e3e3ea04958a87d878e40da97e8": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "FloatProgressModel",
          "state": {
            "_view_name": "ProgressView",
            "style": "IPY_MODEL_786b89f6f6054b538a57434b05c63e2c",
            "_dom_classes": [],
            "description": "Downloading: 100%",
            "_model_name": "FloatProgressModel",
            "bar_style": "success",
            "max": 456318,
            "_view_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "value": 456318,
            "_view_count": null,
            "_view_module_version": "1.5.0",
            "orientation": "horizontal",
            "min": 0,
            "description_tooltip": null,
            "_model_module": "@jupyter-widgets/controls",
            "layout": "IPY_MODEL_52562cd6337e47c9ae810428299271e6"
          }
        },
        "d0dc1495ef034ea884b1c0b8196bccab": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "HTMLModel",
          "state": {
            "_view_name": "HTMLView",
            "style": "IPY_MODEL_4bf03a0202544fc3b44c955d25daa9e4",
            "_dom_classes": [],
            "description": "",
            "_model_name": "HTMLModel",
            "placeholder": "​",
            "_view_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "value": " 456k/456k [00:00&lt;00:00, 1.11MB/s]",
            "_view_count": null,
            "_view_module_version": "1.5.0",
            "description_tooltip": null,
            "_model_module": "@jupyter-widgets/controls",
            "layout": "IPY_MODEL_e8eae278ac404e62aee222d23afb09dd"
          }
        },
        "786b89f6f6054b538a57434b05c63e2c": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "ProgressStyleModel",
          "state": {
            "_view_name": "StyleView",
            "_model_name": "ProgressStyleModel",
            "description_width": "initial",
            "_view_module": "@jupyter-widgets/base",
            "_model_module_version": "1.5.0",
            "_view_count": null,
            "_view_module_version": "1.2.0",
            "bar_color": null,
            "_model_module": "@jupyter-widgets/controls"
          }
        },
        "52562cd6337e47c9ae810428299271e6": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "state": {
            "_view_name": "LayoutView",
            "grid_template_rows": null,
            "right": null,
            "justify_content": null,
            "_view_module": "@jupyter-widgets/base",
            "overflow": null,
            "_model_module_version": "1.2.0",
            "_view_count": null,
            "flex_flow": null,
            "width": null,
            "min_width": null,
            "border": null,
            "align_items": null,
            "bottom": null,
            "_model_module": "@jupyter-widgets/base",
            "top": null,
            "grid_column": null,
            "overflow_y": null,
            "overflow_x": null,
            "grid_auto_flow": null,
            "grid_area": null,
            "grid_template_columns": null,
            "flex": null,
            "_model_name": "LayoutModel",
            "justify_items": null,
            "grid_row": null,
            "max_height": null,
            "align_content": null,
            "visibility": null,
            "align_self": null,
            "height": null,
            "min_height": null,
            "padding": null,
            "grid_auto_rows": null,
            "grid_gap": null,
            "max_width": null,
            "order": null,
            "_view_module_version": "1.2.0",
            "grid_template_areas": null,
            "object_position": null,
            "object_fit": null,
            "grid_auto_columns": null,
            "margin": null,
            "display": null,
            "left": null
          }
        },
        "4bf03a0202544fc3b44c955d25daa9e4": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_view_name": "StyleView",
            "_model_name": "DescriptionStyleModel",
            "description_width": "",
            "_view_module": "@jupyter-widgets/base",
            "_model_module_version": "1.5.0",
            "_view_count": null,
            "_view_module_version": "1.2.0",
            "_model_module": "@jupyter-widgets/controls"
          }
        },
        "e8eae278ac404e62aee222d23afb09dd": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "state": {
            "_view_name": "LayoutView",
            "grid_template_rows": null,
            "right": null,
            "justify_content": null,
            "_view_module": "@jupyter-widgets/base",
            "overflow": null,
            "_model_module_version": "1.2.0",
            "_view_count": null,
            "flex_flow": null,
            "width": null,
            "min_width": null,
            "border": null,
            "align_items": null,
            "bottom": null,
            "_model_module": "@jupyter-widgets/base",
            "top": null,
            "grid_column": null,
            "overflow_y": null,
            "overflow_x": null,
            "grid_auto_flow": null,
            "grid_area": null,
            "grid_template_columns": null,
            "flex": null,
            "_model_name": "LayoutModel",
            "justify_items": null,
            "grid_row": null,
            "max_height": null,
            "align_content": null,
            "visibility": null,
            "align_self": null,
            "height": null,
            "min_height": null,
            "padding": null,
            "grid_auto_rows": null,
            "grid_gap": null,
            "max_width": null,
            "order": null,
            "_view_module_version": "1.2.0",
            "grid_template_areas": null,
            "object_position": null,
            "object_fit": null,
            "grid_auto_columns": null,
            "margin": null,
            "display": null,
            "left": null
          }
        },
        "4630943a05624c2680d413a6c173c78c": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "HBoxModel",
          "state": {
            "_view_name": "HBoxView",
            "_dom_classes": [],
            "_model_name": "HBoxModel",
            "_view_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_view_count": null,
            "_view_module_version": "1.5.0",
            "box_style": "",
            "layout": "IPY_MODEL_2c2935d92bc941089a1f6b5f08905d25",
            "_model_module": "@jupyter-widgets/controls",
            "children": [
              "IPY_MODEL_492da04c2b7b40a497dec8fca7106a65",
              "IPY_MODEL_cfd174ea68c1499584453872faab374f"
            ]
          }
        },
        "2c2935d92bc941089a1f6b5f08905d25": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "state": {
            "_view_name": "LayoutView",
            "grid_template_rows": null,
            "right": null,
            "justify_content": null,
            "_view_module": "@jupyter-widgets/base",
            "overflow": null,
            "_model_module_version": "1.2.0",
            "_view_count": null,
            "flex_flow": null,
            "width": null,
            "min_width": null,
            "border": null,
            "align_items": null,
            "bottom": null,
            "_model_module": "@jupyter-widgets/base",
            "top": null,
            "grid_column": null,
            "overflow_y": null,
            "overflow_x": null,
            "grid_auto_flow": null,
            "grid_area": null,
            "grid_template_columns": null,
            "flex": null,
            "_model_name": "LayoutModel",
            "justify_items": null,
            "grid_row": null,
            "max_height": null,
            "align_content": null,
            "visibility": null,
            "align_self": null,
            "height": null,
            "min_height": null,
            "padding": null,
            "grid_auto_rows": null,
            "grid_gap": null,
            "max_width": null,
            "order": null,
            "_view_module_version": "1.2.0",
            "grid_template_areas": null,
            "object_position": null,
            "object_fit": null,
            "grid_auto_columns": null,
            "margin": null,
            "display": null,
            "left": null
          }
        },
        "492da04c2b7b40a497dec8fca7106a65": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "FloatProgressModel",
          "state": {
            "_view_name": "ProgressView",
            "style": "IPY_MODEL_03fc58d3111f4655b8fb50f862e91825",
            "_dom_classes": [],
            "description": "Downloading: 100%",
            "_model_name": "FloatProgressModel",
            "bar_style": "success",
            "max": 481,
            "_view_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "value": 481,
            "_view_count": null,
            "_view_module_version": "1.5.0",
            "orientation": "horizontal",
            "min": 0,
            "description_tooltip": null,
            "_model_module": "@jupyter-widgets/controls",
            "layout": "IPY_MODEL_5ac35ada52134ab6a1a11097e394985f"
          }
        },
        "cfd174ea68c1499584453872faab374f": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "HTMLModel",
          "state": {
            "_view_name": "HTMLView",
            "style": "IPY_MODEL_91f72e84887f44048db5fe99417cfdb9",
            "_dom_classes": [],
            "description": "",
            "_model_name": "HTMLModel",
            "placeholder": "​",
            "_view_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "value": " 481/481 [00:06&lt;00:00, 72.1B/s]",
            "_view_count": null,
            "_view_module_version": "1.5.0",
            "description_tooltip": null,
            "_model_module": "@jupyter-widgets/controls",
            "layout": "IPY_MODEL_50c45e3781144ab68cb9cb8bfb12d868"
          }
        },
        "03fc58d3111f4655b8fb50f862e91825": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "ProgressStyleModel",
          "state": {
            "_view_name": "StyleView",
            "_model_name": "ProgressStyleModel",
            "description_width": "initial",
            "_view_module": "@jupyter-widgets/base",
            "_model_module_version": "1.5.0",
            "_view_count": null,
            "_view_module_version": "1.2.0",
            "bar_color": null,
            "_model_module": "@jupyter-widgets/controls"
          }
        },
        "5ac35ada52134ab6a1a11097e394985f": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "state": {
            "_view_name": "LayoutView",
            "grid_template_rows": null,
            "right": null,
            "justify_content": null,
            "_view_module": "@jupyter-widgets/base",
            "overflow": null,
            "_model_module_version": "1.2.0",
            "_view_count": null,
            "flex_flow": null,
            "width": null,
            "min_width": null,
            "border": null,
            "align_items": null,
            "bottom": null,
            "_model_module": "@jupyter-widgets/base",
            "top": null,
            "grid_column": null,
            "overflow_y": null,
            "overflow_x": null,
            "grid_auto_flow": null,
            "grid_area": null,
            "grid_template_columns": null,
            "flex": null,
            "_model_name": "LayoutModel",
            "justify_items": null,
            "grid_row": null,
            "max_height": null,
            "align_content": null,
            "visibility": null,
            "align_self": null,
            "height": null,
            "min_height": null,
            "padding": null,
            "grid_auto_rows": null,
            "grid_gap": null,
            "max_width": null,
            "order": null,
            "_view_module_version": "1.2.0",
            "grid_template_areas": null,
            "object_position": null,
            "object_fit": null,
            "grid_auto_columns": null,
            "margin": null,
            "display": null,
            "left": null
          }
        },
        "91f72e84887f44048db5fe99417cfdb9": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_view_name": "StyleView",
            "_model_name": "DescriptionStyleModel",
            "description_width": "",
            "_view_module": "@jupyter-widgets/base",
            "_model_module_version": "1.5.0",
            "_view_count": null,
            "_view_module_version": "1.2.0",
            "_model_module": "@jupyter-widgets/controls"
          }
        },
        "50c45e3781144ab68cb9cb8bfb12d868": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "state": {
            "_view_name": "LayoutView",
            "grid_template_rows": null,
            "right": null,
            "justify_content": null,
            "_view_module": "@jupyter-widgets/base",
            "overflow": null,
            "_model_module_version": "1.2.0",
            "_view_count": null,
            "flex_flow": null,
            "width": null,
            "min_width": null,
            "border": null,
            "align_items": null,
            "bottom": null,
            "_model_module": "@jupyter-widgets/base",
            "top": null,
            "grid_column": null,
            "overflow_y": null,
            "overflow_x": null,
            "grid_auto_flow": null,
            "grid_area": null,
            "grid_template_columns": null,
            "flex": null,
            "_model_name": "LayoutModel",
            "justify_items": null,
            "grid_row": null,
            "max_height": null,
            "align_content": null,
            "visibility": null,
            "align_self": null,
            "height": null,
            "min_height": null,
            "padding": null,
            "grid_auto_rows": null,
            "grid_gap": null,
            "max_width": null,
            "order": null,
            "_view_module_version": "1.2.0",
            "grid_template_areas": null,
            "object_position": null,
            "object_fit": null,
            "grid_auto_columns": null,
            "margin": null,
            "display": null,
            "left": null
          }
        },
        "b421a3b1779a47f6be61e45a3f3140fd": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "HBoxModel",
          "state": {
            "_view_name": "HBoxView",
            "_dom_classes": [],
            "_model_name": "HBoxModel",
            "_view_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_view_count": null,
            "_view_module_version": "1.5.0",
            "box_style": "",
            "layout": "IPY_MODEL_7abdbc46110941e6a06146ecca8d4ae7",
            "_model_module": "@jupyter-widgets/controls",
            "children": [
              "IPY_MODEL_7ca09c13141845af85e6f03a375d3d7f",
              "IPY_MODEL_cad4459cfece48dda101b5bca1d92d07"
            ]
          }
        },
        "7abdbc46110941e6a06146ecca8d4ae7": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "state": {
            "_view_name": "LayoutView",
            "grid_template_rows": null,
            "right": null,
            "justify_content": null,
            "_view_module": "@jupyter-widgets/base",
            "overflow": null,
            "_model_module_version": "1.2.0",
            "_view_count": null,
            "flex_flow": null,
            "width": null,
            "min_width": null,
            "border": null,
            "align_items": null,
            "bottom": null,
            "_model_module": "@jupyter-widgets/base",
            "top": null,
            "grid_column": null,
            "overflow_y": null,
            "overflow_x": null,
            "grid_auto_flow": null,
            "grid_area": null,
            "grid_template_columns": null,
            "flex": null,
            "_model_name": "LayoutModel",
            "justify_items": null,
            "grid_row": null,
            "max_height": null,
            "align_content": null,
            "visibility": null,
            "align_self": null,
            "height": null,
            "min_height": null,
            "padding": null,
            "grid_auto_rows": null,
            "grid_gap": null,
            "max_width": null,
            "order": null,
            "_view_module_version": "1.2.0",
            "grid_template_areas": null,
            "object_position": null,
            "object_fit": null,
            "grid_auto_columns": null,
            "margin": null,
            "display": null,
            "left": null
          }
        },
        "7ca09c13141845af85e6f03a375d3d7f": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "FloatProgressModel",
          "state": {
            "_view_name": "ProgressView",
            "style": "IPY_MODEL_58d9fb4ea67b4e1a8fbda6d3ed271fa6",
            "_dom_classes": [],
            "description": "Downloading: 100%",
            "_model_name": "FloatProgressModel",
            "bar_style": "success",
            "max": 501200538,
            "_view_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "value": 501200538,
            "_view_count": null,
            "_view_module_version": "1.5.0",
            "orientation": "horizontal",
            "min": 0,
            "description_tooltip": null,
            "_model_module": "@jupyter-widgets/controls",
            "layout": "IPY_MODEL_f46b2b4b9d4e4a8792e69d9897d60222"
          }
        },
        "cad4459cfece48dda101b5bca1d92d07": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "HTMLModel",
          "state": {
            "_view_name": "HTMLView",
            "style": "IPY_MODEL_6391112bde2b438092ad5238859c4a25",
            "_dom_classes": [],
            "description": "",
            "_model_name": "HTMLModel",
            "placeholder": "​",
            "_view_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "value": " 501M/501M [00:06&lt;00:00, 76.4MB/s]",
            "_view_count": null,
            "_view_module_version": "1.5.0",
            "description_tooltip": null,
            "_model_module": "@jupyter-widgets/controls",
            "layout": "IPY_MODEL_a402de66b14147d99e0751f483ac0f11"
          }
        },
        "58d9fb4ea67b4e1a8fbda6d3ed271fa6": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "ProgressStyleModel",
          "state": {
            "_view_name": "StyleView",
            "_model_name": "ProgressStyleModel",
            "description_width": "initial",
            "_view_module": "@jupyter-widgets/base",
            "_model_module_version": "1.5.0",
            "_view_count": null,
            "_view_module_version": "1.2.0",
            "bar_color": null,
            "_model_module": "@jupyter-widgets/controls"
          }
        },
        "f46b2b4b9d4e4a8792e69d9897d60222": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "state": {
            "_view_name": "LayoutView",
            "grid_template_rows": null,
            "right": null,
            "justify_content": null,
            "_view_module": "@jupyter-widgets/base",
            "overflow": null,
            "_model_module_version": "1.2.0",
            "_view_count": null,
            "flex_flow": null,
            "width": null,
            "min_width": null,
            "border": null,
            "align_items": null,
            "bottom": null,
            "_model_module": "@jupyter-widgets/base",
            "top": null,
            "grid_column": null,
            "overflow_y": null,
            "overflow_x": null,
            "grid_auto_flow": null,
            "grid_area": null,
            "grid_template_columns": null,
            "flex": null,
            "_model_name": "LayoutModel",
            "justify_items": null,
            "grid_row": null,
            "max_height": null,
            "align_content": null,
            "visibility": null,
            "align_self": null,
            "height": null,
            "min_height": null,
            "padding": null,
            "grid_auto_rows": null,
            "grid_gap": null,
            "max_width": null,
            "order": null,
            "_view_module_version": "1.2.0",
            "grid_template_areas": null,
            "object_position": null,
            "object_fit": null,
            "grid_auto_columns": null,
            "margin": null,
            "display": null,
            "left": null
          }
        },
        "6391112bde2b438092ad5238859c4a25": {
          "model_module": "@jupyter-widgets/controls",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_view_name": "StyleView",
            "_model_name": "DescriptionStyleModel",
            "description_width": "",
            "_view_module": "@jupyter-widgets/base",
            "_model_module_version": "1.5.0",
            "_view_count": null,
            "_view_module_version": "1.2.0",
            "_model_module": "@jupyter-widgets/controls"
          }
        },
        "a402de66b14147d99e0751f483ac0f11": {
          "model_module": "@jupyter-widgets/base",
          "model_name": "LayoutModel",
          "state": {
            "_view_name": "LayoutView",
            "grid_template_rows": null,
            "right": null,
            "justify_content": null,
            "_view_module": "@jupyter-widgets/base",
            "overflow": null,
            "_model_module_version": "1.2.0",
            "_view_count": null,
            "flex_flow": null,
            "width": null,
            "min_width": null,
            "border": null,
            "align_items": null,
            "bottom": null,
            "_model_module": "@jupyter-widgets/base",
            "top": null,
            "grid_column": null,
            "overflow_y": null,
            "overflow_x": null,
            "grid_auto_flow": null,
            "grid_area": null,
            "grid_template_columns": null,
            "flex": null,
            "_model_name": "LayoutModel",
            "justify_items": null,
            "grid_row": null,
            "max_height": null,
            "align_content": null,
            "visibility": null,
            "align_self": null,
            "height": null,
            "min_height": null,
            "padding": null,
            "grid_auto_rows": null,
            "grid_gap": null,
            "max_width": null,
            "order": null,
            "_view_module_version": "1.2.0",
            "grid_template_areas": null,
            "object_position": null,
            "object_fit": null,
            "grid_auto_columns": null,
            "margin": null,
            "display": null,
            "left": null
          }
        }
      }
    }
  },
  "cells": [
    {
      "cell_type": "code",
      "metadata": {
        "id": "6yQnx-q9ET1H",
        "outputId": "dc61c453-5efc-49d1-8885-bc5bf7642ac3",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 608
        }
      },
      "source": [
        "!pip install transformers"
      ],
      "execution_count": 1,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Collecting transformers\n",
            "\u001b[?25l  Downloading https://files.pythonhosted.org/packages/19/22/aff234f4a841f8999e68a7a94bdd4b60b4cebcfeca5d67d61cd08c9179de/transformers-3.3.1-py3-none-any.whl (1.1MB)\n",
            "\u001b[K     |████████████████████████████████| 1.1MB 8.1MB/s \n",
            "\u001b[?25hRequirement already satisfied: numpy in /usr/local/lib/python3.6/dist-packages (from transformers) (1.18.5)\n",
            "Requirement already satisfied: requests in /usr/local/lib/python3.6/dist-packages (from transformers) (2.23.0)\n",
            "Requirement already satisfied: packaging in /usr/local/lib/python3.6/dist-packages (from transformers) (20.4)\n",
            "Requirement already satisfied: regex!=2019.12.17 in /usr/local/lib/python3.6/dist-packages (from transformers) (2019.12.20)\n",
            "Collecting sentencepiece!=0.1.92\n",
            "\u001b[?25l  Downloading https://files.pythonhosted.org/packages/d4/a4/d0a884c4300004a78cca907a6ff9a5e9fe4f090f5d95ab341c53d28cbc58/sentencepiece-0.1.91-cp36-cp36m-manylinux1_x86_64.whl (1.1MB)\n",
            "\u001b[K     |████████████████████████████████| 1.1MB 22.2MB/s \n",
            "\u001b[?25hCollecting sacremoses\n",
            "\u001b[?25l  Downloading https://files.pythonhosted.org/packages/7d/34/09d19aff26edcc8eb2a01bed8e98f13a1537005d31e95233fd48216eed10/sacremoses-0.0.43.tar.gz (883kB)\n",
            "\u001b[K     |████████████████████████████████| 890kB 55.3MB/s \n",
            "\u001b[?25hCollecting tokenizers==0.8.1.rc2\n",
            "\u001b[?25l  Downloading https://files.pythonhosted.org/packages/80/83/8b9fccb9e48eeb575ee19179e2bdde0ee9a1904f97de5f02d19016b8804f/tokenizers-0.8.1rc2-cp36-cp36m-manylinux1_x86_64.whl (3.0MB)\n",
            "\u001b[K     |████████████████████████████████| 3.0MB 47.6MB/s \n",
            "\u001b[?25hRequirement already satisfied: tqdm>=4.27 in /usr/local/lib/python3.6/dist-packages (from transformers) (4.41.1)\n",
            "Requirement already satisfied: dataclasses; python_version < \"3.7\" in /usr/local/lib/python3.6/dist-packages (from transformers) (0.7)\n",
            "Requirement already satisfied: filelock in /usr/local/lib/python3.6/dist-packages (from transformers) (3.0.12)\n",
            "Requirement already satisfied: idna<3,>=2.5 in /usr/local/lib/python3.6/dist-packages (from requests->transformers) (2.10)\n",
            "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.6/dist-packages (from requests->transformers) (2020.6.20)\n",
            "Requirement already satisfied: chardet<4,>=3.0.2 in /usr/local/lib/python3.6/dist-packages (from requests->transformers) (3.0.4)\n",
            "Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in /usr/local/lib/python3.6/dist-packages (from requests->transformers) (1.24.3)\n",
            "Requirement already satisfied: six in /usr/local/lib/python3.6/dist-packages (from packaging->transformers) (1.15.0)\n",
            "Requirement already satisfied: pyparsing>=2.0.2 in /usr/local/lib/python3.6/dist-packages (from packaging->transformers) (2.4.7)\n",
            "Requirement already satisfied: click in /usr/local/lib/python3.6/dist-packages (from sacremoses->transformers) (7.1.2)\n",
            "Requirement already satisfied: joblib in /usr/local/lib/python3.6/dist-packages (from sacremoses->transformers) (0.16.0)\n",
            "Building wheels for collected packages: sacremoses\n",
            "  Building wheel for sacremoses (setup.py) ... \u001b[?25l\u001b[?25hdone\n",
            "  Created wheel for sacremoses: filename=sacremoses-0.0.43-cp36-none-any.whl size=893257 sha256=a0f65a298b990ecd3f6e00560590dabe60e1fc03dbb7e46d4df8f1f7a0a64ac7\n",
            "  Stored in directory: /root/.cache/pip/wheels/29/3c/fd/7ce5c3f0666dab31a50123635e6fb5e19ceb42ce38d4e58f45\n",
            "Successfully built sacremoses\n",
            "Installing collected packages: sentencepiece, sacremoses, tokenizers, transformers\n",
            "Successfully installed sacremoses-0.0.43 sentencepiece-0.1.91 tokenizers-0.8.1rc2 transformers-3.3.1\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "RPz2ld5rEYd_"
      },
      "source": [
        "import numpy as np # linear algebra\n",
        "import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\n",
        "from pathlib import Path \n",
        "\n",
        "import os\n",
        "\n",
        "import torch\n",
        "import torch.optim as optim\n",
        "\n",
        "import random \n",
        "\n",
        "# fastai\n",
        "from fastai import *\n",
        "from fastai.text import *\n",
        "from fastai.callbacks import *\n",
        "\n",
        "# transformers\n",
        "from transformers import PreTrainedModel, PreTrainedTokenizer, PretrainedConfig\n",
        "\n",
        "from transformers import BertForSequenceClassification, BertTokenizer, BertConfig\n",
        "from transformers import RobertaForSequenceClassification, RobertaTokenizer, RobertaConfig\n",
        "from transformers import XLNetForSequenceClassification, XLNetTokenizer, XLNetConfig\n",
        "from transformers import XLMForSequenceClassification, XLMTokenizer, XLMConfig\n",
        "from transformers import DistilBertForSequenceClassification, DistilBertTokenizer, DistilBertConfig"
      ],
      "execution_count": 2,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "K5RYdIuBjjCX",
        "outputId": "42fc0133-b71e-4291-80a5-1bb20ce5fff9",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 34
        }
      },
      "source": [
        "from google.colab import drive\n",
        "drive.mount('/content/drive')"
      ],
      "execution_count": 3,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Mounted at /content/drive\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "5KtGKpfOE7u3",
        "outputId": "5d233d28-41d5-4903-8ecd-fce55aa4978e",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 195
        }
      },
      "source": [
        "train_df = pd.read_json(\"/content/drive/My Drive/embold_train.json\").reset_index(drop=True)\n",
        "train_df.head()"
      ],
      "execution_count": 4,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>title</th>\n",
              "      <th>body</th>\n",
              "      <th>label</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>y-zoom piano roll</td>\n",
              "      <td>a y-zoom on the piano roll would be useful.</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>buggy behavior in selection</td>\n",
              "      <td>! screenshot from 2016-02-23 21 27 40  https:/...</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>auto update feature</td>\n",
              "      <td>hi,\\r \\r great job so far, @saenzramiro ! : \\r...</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>filter out noisy endpoints in logs</td>\n",
              "      <td>i think we should stop logging requests to:\\r ...</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>enable pid on / pid off alarm actions for ardu...</td>\n",
              "      <td>expected behavior\\r alarm actions pid on and p...</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "                                               title  ... label\n",
              "0                                  y-zoom piano roll  ...     1\n",
              "1                        buggy behavior in selection  ...     0\n",
              "2                                auto update feature  ...     1\n",
              "3                 filter out noisy endpoints in logs  ...     1\n",
              "4  enable pid on / pid off alarm actions for ardu...  ...     0\n",
              "\n",
              "[5 rows x 3 columns]"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 4
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "cezM6uwBGWdS",
        "outputId": "73e6cd00-3ae4-4c39-afb7-0ad761661666",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 195
        }
      },
      "source": [
        "test_df = pd.read_json(\"/content/drive/My Drive/embold_test.json\").reset_index(drop=True)\n",
        "test_df.head()"
      ],
      "execution_count": 5,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>title</th>\n",
              "      <th>body</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>config question  path-specific environment var...</td>\n",
              "      <td>issue description or question\\r \\r hey @artemg...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>crash indien vol</td>\n",
              "      <td>de simulator crasht als hij vol zit</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>unable to mine rocks</td>\n",
              "      <td>sarkasmo starting today, when i hit enter  act...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>not all whitelists are processed</td>\n",
              "      <td>create following rules... order of creation is...</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>add ctx menu for idafree 70 and idafree 5</td>\n",
              "      <td>associated with .dll, .dll_, .exe, .exe_, .sc,...</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "                                               title                                               body\n",
              "0  config question  path-specific environment var...  issue description or question\\r \\r hey @artemg...\n",
              "1                                   crash indien vol                de simulator crasht als hij vol zit\n",
              "2                               unable to mine rocks  sarkasmo starting today, when i hit enter  act...\n",
              "3                   not all whitelists are processed  create following rules... order of creation is...\n",
              "4          add ctx menu for idafree 70 and idafree 5  associated with .dll, .dll_, .exe, .exe_, .sc,..."
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 5
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "YmcWYJBOGedE",
        "outputId": "96115a63-c646-43bf-f208-efc31fa5aec8",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 195
        }
      },
      "source": [
        "train_ex_df = pd.read_json(\"/content/drive/My Drive/embold_train_extra.json\")\n",
        "train_ex_df.head()"
      ],
      "execution_count": 6,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>title</th>\n",
              "      <th>body</th>\n",
              "      <th>label</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>use a 8bit typeface</td>\n",
              "      <td>since this is meant to emulate some old arcade...</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>implement wireless m-bus binding</td>\n",
              "      <td>_from  chris.pa...@googlemail.com  https://cod...</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>add multilang support for timeago.js</td>\n",
              "      <td>currently it is only  en . \\r required to add ...</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>scaleway - seg-fault on shutdown</td>\n",
              "      <td>tbr  irc  creates a new scaleway instance with...</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>sistema de pintura: no se guardar los nuevos p...</td>\n",
              "      <td>este sp ya estaba asignado a un carro y se enc...</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "                                               title  ... label\n",
              "0                                use a 8bit typeface  ...     1\n",
              "1                   implement wireless m-bus binding  ...     1\n",
              "2               add multilang support for timeago.js  ...     1\n",
              "3                   scaleway - seg-fault on shutdown  ...     0\n",
              "4  sistema de pintura: no se guardar los nuevos p...  ...     0\n",
              "\n",
              "[5 rows x 3 columns]"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 6
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "NTwS6tl0GlLh",
        "outputId": "4c81e43f-975c-448e-de38-644c52f46cc4",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 195
        }
      },
      "source": [
        "train_df['body']=train_df['title']+\" \"+train_df['body']\n",
        "train_ex_df['body']=train_ex_df['title']+\" \"+train_ex_df['body']\n",
        "\n",
        "train_df1=pd.concat([train_df,train_ex_df],axis=0)\n",
        "train_df1.head()"
      ],
      "execution_count": 7,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>title</th>\n",
              "      <th>body</th>\n",
              "      <th>label</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>y-zoom piano roll</td>\n",
              "      <td>y-zoom piano roll a y-zoom on the piano roll w...</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>buggy behavior in selection</td>\n",
              "      <td>buggy behavior in selection ! screenshot from ...</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>auto update feature</td>\n",
              "      <td>auto update feature hi,\\r \\r great job so far,...</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>filter out noisy endpoints in logs</td>\n",
              "      <td>filter out noisy endpoints in logs i think we ...</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>enable pid on / pid off alarm actions for ardu...</td>\n",
              "      <td>enable pid on / pid off alarm actions for ardu...</td>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "                                               title  ... label\n",
              "0                                  y-zoom piano roll  ...     1\n",
              "1                        buggy behavior in selection  ...     0\n",
              "2                                auto update feature  ...     1\n",
              "3                 filter out noisy endpoints in logs  ...     1\n",
              "4  enable pid on / pid off alarm actions for ardu...  ...     0\n",
              "\n",
              "[5 rows x 3 columns]"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 7
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "QmmRzcaFGwPM",
        "outputId": "2ed8fe11-fc44-4b43-9248-7dab93d3b6d5",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 50
        }
      },
      "source": [
        "import fastai\n",
        "import transformers\n",
        "print('fastai version :', fastai.__version__)\n",
        "print('transformers version :', transformers.__version__)"
      ],
      "execution_count": 8,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "fastai version : 1.0.61\n",
            "transformers version : 3.3.1\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "HlheMtIxG4Ly"
      },
      "source": [
        "MODEL_CLASSES = {\n",
        "    'bert': (BertForSequenceClassification, BertTokenizer, BertConfig),\n",
        "    'xlnet': (XLNetForSequenceClassification, XLNetTokenizer, XLNetConfig),\n",
        "    'xlm': (XLMForSequenceClassification, XLMTokenizer, XLMConfig),\n",
        "    'roberta': (RobertaForSequenceClassification, RobertaTokenizer, RobertaConfig),\n",
        "    'distilbert': (DistilBertForSequenceClassification, DistilBertTokenizer, DistilBertConfig)\n",
        "}"
      ],
      "execution_count": 9,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "8I02YRgkHD-5"
      },
      "source": [
        "# Parameters\n",
        "seed = 42\n",
        "use_fp16 = False\n",
        "bs = 16\n",
        "\n",
        "model_type = 'roberta'\n",
        "pretrained_model_name = 'roberta-base'"
      ],
      "execution_count": 10,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "qBBNohtQHOXq"
      },
      "source": [
        "model_class, tokenizer_class, config_class = MODEL_CLASSES[model_type]"
      ],
      "execution_count": 11,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "KBv1XPknHszE"
      },
      "source": [
        "def seed_all(seed_value):\n",
        "    random.seed(seed_value) # Python\n",
        "    np.random.seed(seed_value) # cpu vars\n",
        "    torch.manual_seed(seed_value) # cpu  vars\n",
        "    \n",
        "    if torch.cuda.is_available(): \n",
        "        torch.cuda.manual_seed(seed_value)\n",
        "        torch.cuda.manual_seed_all(seed_value) # gpu vars\n",
        "        torch.backends.cudnn.deterministic = True  #needed\n",
        "        torch.backends.cudnn.benchmark = False\n",
        "seed_all(seed)"
      ],
      "execution_count": 12,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "jJo0rilIHswU"
      },
      "source": [
        "class TransformersBaseTokenizer(BaseTokenizer):\n",
        "    \"\"\"Wrapper around PreTrainedTokenizer to be compatible with fast.ai\"\"\"\n",
        "    def __init__(self, pretrained_tokenizer: PreTrainedTokenizer, model_type = 'bert', **kwargs):\n",
        "        self._pretrained_tokenizer = pretrained_tokenizer\n",
        "        self.max_seq_len = pretrained_tokenizer.max_len\n",
        "        self.model_type = model_type\n",
        "\n",
        "    def __call__(self, *args, **kwargs): \n",
        "        return self\n",
        "\n",
        "    def tokenizer(self, t:str) -> List[str]:\n",
        "        \"\"\"Limits the maximum sequence length and add the spesial tokens\"\"\"\n",
        "        CLS = self._pretrained_tokenizer.cls_token\n",
        "        SEP = self._pretrained_tokenizer.sep_token\n",
        "        if self.model_type in ['roberta']:\n",
        "            tokens = self._pretrained_tokenizer.tokenize(t, add_prefix_space=True)[:self.max_seq_len - 2]\n",
        "            tokens = [CLS] + tokens + [SEP]\n",
        "        else:\n",
        "            tokens = self._pretrained_tokenizer.tokenize(t)[:self.max_seq_len - 2]\n",
        "            if self.model_type in ['xlnet']:\n",
        "                tokens = tokens + [SEP] +  [CLS]\n",
        "            else:\n",
        "                tokens = [CLS] + tokens + [SEP]\n",
        "        return tokens"
      ],
      "execution_count": 13,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "M8IRcytHIAP_",
        "outputId": "d18ca984-b3e2-4031-b9dd-232a09cd1790",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 168,
          "referenced_widgets": [
            "d1b4a7765abe4a609e7393cf2d3e8950",
            "bf7d32550dfc473db5629330a0338e2d",
            "37b5e270f78a49abafbef17bd5939f19",
            "396cd56409ba4319a624bc08fd062575",
            "7cf4749da72c4fa08604983ec36c8f99",
            "c64a5a2b488f4a04a008dc51b16693f2",
            "20267910ff90454cb86fc71363101acc",
            "3c1fc76bfbf6471db47e1fb993349cac",
            "56fe0b30136f44359d42c65fa56df87b",
            "96bd307ed1d44f41bdca050559aca45a",
            "33322e3e3ea04958a87d878e40da97e8",
            "d0dc1495ef034ea884b1c0b8196bccab",
            "786b89f6f6054b538a57434b05c63e2c",
            "52562cd6337e47c9ae810428299271e6",
            "4bf03a0202544fc3b44c955d25daa9e4",
            "e8eae278ac404e62aee222d23afb09dd"
          ]
        }
      },
      "source": [
        "transformer_tokenizer = tokenizer_class.from_pretrained(pretrained_model_name)\n",
        "transformer_base_tokenizer = TransformersBaseTokenizer(pretrained_tokenizer = transformer_tokenizer, model_type = model_type)\n",
        "fastai_tokenizer = Tokenizer(tok_func = transformer_base_tokenizer, pre_rules=[], post_rules=[])"
      ],
      "execution_count": 14,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "d1b4a7765abe4a609e7393cf2d3e8950",
              "version_minor": 0,
              "version_major": 2
            },
            "text/plain": [
              "HBox(children=(FloatProgress(value=0.0, description='Downloading', max=898823.0, style=ProgressStyle(descripti…"
            ]
          },
          "metadata": {
            "tags": []
          }
        },
        {
          "output_type": "stream",
          "text": [
            "\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "display_data",
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "56fe0b30136f44359d42c65fa56df87b",
              "version_minor": 0,
              "version_major": 2
            },
            "text/plain": [
              "HBox(children=(FloatProgress(value=0.0, description='Downloading', max=456318.0, style=ProgressStyle(descripti…"
            ]
          },
          "metadata": {
            "tags": []
          }
        },
        {
          "output_type": "stream",
          "text": [
            "\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "stream",
          "text": [
            "/usr/local/lib/python3.6/dist-packages/transformers/tokenization_utils_base.py:1324: FutureWarning: The `max_len` attribute has been deprecated and will be removed in a future version, use `model_max_length` instead.\n",
            "  FutureWarning,\n"
          ],
          "name": "stderr"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "ArBvUsphIBxI"
      },
      "source": [
        "class TransformersVocab(Vocab):\n",
        "    def __init__(self, tokenizer: PreTrainedTokenizer):\n",
        "        super(TransformersVocab, self).__init__(itos = [])\n",
        "        self.tokenizer = tokenizer\n",
        "    \n",
        "    def numericalize(self, t:Collection[str]) -> List[int]:\n",
        "        \"Convert a list of tokens `t` to their ids.\"\n",
        "        return self.tokenizer.convert_tokens_to_ids(t)\n",
        "        #return self.tokenizer.encode(t)\n",
        "\n",
        "    def textify(self, nums:Collection[int], sep=' ') -> List[str]:\n",
        "        \"Convert a list of `nums` to their tokens.\"\n",
        "        nums = np.array(nums).tolist()\n",
        "        return sep.join(self.tokenizer.convert_ids_to_tokens(nums)) if sep is not None else self.tokenizer.convert_ids_to_tokens(nums)\n",
        "    \n",
        "    def __getstate__(self):\n",
        "        return {'itos':self.itos, 'tokenizer':self.tokenizer}\n",
        "\n",
        "    def __setstate__(self, state:dict):\n",
        "        self.itos = state['itos']\n",
        "        self.tokenizer = state['tokenizer']\n",
        "        self.stoi = collections.defaultdict(int,{v:k for k,v in enumerate(self.itos)})"
      ],
      "execution_count": 15,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "WXNsRL7kIB3l"
      },
      "source": [
        "transformer_vocab =  TransformersVocab(tokenizer = transformer_tokenizer)\n",
        "numericalize_processor = NumericalizeProcessor(vocab=transformer_vocab)\n",
        "\n",
        "tokenize_processor = TokenizeProcessor(tokenizer=fastai_tokenizer, include_bos=False, include_eos=False)\n",
        "\n",
        "transformer_processor = [tokenize_processor, numericalize_processor]"
      ],
      "execution_count": 16,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "_Eya6MkFIBub"
      },
      "source": [
        "pad_first = bool(model_type in ['xlnet'])\n",
        "pad_idx = transformer_tokenizer.pad_token_id"
      ],
      "execution_count": 17,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "lLfcUPZaIcfR",
        "outputId": "4d1b9184-a818-4cbe-8ac4-bf3e8f432b61",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 67
        }
      },
      "source": [
        "tokens = transformer_tokenizer.tokenize('Salut c est moi, Hello it s me')\n",
        "print(tokens)\n",
        "ids = transformer_tokenizer.convert_tokens_to_ids(tokens)\n",
        "print(ids)\n",
        "transformer_tokenizer.convert_ids_to_tokens(ids)"
      ],
      "execution_count": 18,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "['Sal', 'ut', 'Ġc', 'Ġest', 'Ġmo', 'i', ',', 'ĠHello', 'Ġit', 'Ġs', 'Ġme']\n",
            "[18111, 1182, 740, 3304, 7458, 118, 6, 20920, 24, 579, 162]\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "['Sal', 'ut', 'Ġc', 'Ġest', 'Ġmo', 'i', ',', 'ĠHello', 'Ġit', 'Ġs', 'Ġme']"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 18
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "kYhULwS4IcnB",
        "outputId": "22e3eeee-b4cc-416c-de86-d89829ba6a1e",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 17
        }
      },
      "source": [
        "databunch = (TextList.from_df(train_df1, cols='body', processor=transformer_processor)\n",
        "             .split_by_rand_pct(0.05,seed=seed)\n",
        "             .label_from_df(cols= 'label')\n",
        "             .add_test(test_df)\n",
        "             .databunch(bs=bs, pad_first=pad_first, pad_idx=pad_idx))"
      ],
      "execution_count": 19,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/html": [
              ""
            ],
            "text/plain": [
              "<IPython.core.display.HTML object>"
            ]
          },
          "metadata": {
            "tags": []
          }
        },
        {
          "output_type": "display_data",
          "data": {
            "text/html": [
              ""
            ],
            "text/plain": [
              "<IPython.core.display.HTML object>"
            ]
          },
          "metadata": {
            "tags": []
          }
        },
        {
          "output_type": "display_data",
          "data": {
            "text/html": [
              ""
            ],
            "text/plain": [
              "<IPython.core.display.HTML object>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "I136s9ZzIunS"
      },
      "source": [
        "# defining our model architecture \n",
        "class CustomTransformerModel(nn.Module):\n",
        "    def __init__(self, transformer_model: PreTrainedModel):\n",
        "        super(CustomTransformerModel,self).__init__()\n",
        "        self.transformer = transformer_model\n",
        "        \n",
        "    def forward(self, input_ids, attention_mask=None):\n",
        "        \n",
        "        # attention_mask\n",
        "        # Mask to avoid performing attention on padding token indices.\n",
        "        # Mask values selected in ``[0, 1]``:\n",
        "        # ``1`` for tokens that are NOT MASKED, ``0`` for MASKED tokens.\n",
        "        attention_mask = (input_ids!=pad_idx).type(input_ids.type()) \n",
        "        \n",
        "        logits = self.transformer(input_ids,\n",
        "                                  attention_mask = attention_mask)[0]   \n",
        "        return logits\n"
      ],
      "execution_count": 20,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "4K3HVNa4I7GK",
        "outputId": "69aabb30-82bc-4fc1-898c-ba7cd8b47102",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 620,
          "referenced_widgets": [
            "4630943a05624c2680d413a6c173c78c",
            "2c2935d92bc941089a1f6b5f08905d25",
            "492da04c2b7b40a497dec8fca7106a65",
            "cfd174ea68c1499584453872faab374f",
            "03fc58d3111f4655b8fb50f862e91825",
            "5ac35ada52134ab6a1a11097e394985f",
            "91f72e84887f44048db5fe99417cfdb9",
            "50c45e3781144ab68cb9cb8bfb12d868"
          ]
        }
      },
      "source": [
        "config = config_class.from_pretrained(pretrained_model_name)\n",
        "config.num_labels = 3\n",
        "config.use_bfloat16 = use_fp16\n",
        "print(config)"
      ],
      "execution_count": 21,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "4630943a05624c2680d413a6c173c78c",
              "version_minor": 0,
              "version_major": 2
            },
            "text/plain": [
              "HBox(children=(FloatProgress(value=0.0, description='Downloading', max=481.0, style=ProgressStyle(description_…"
            ]
          },
          "metadata": {
            "tags": []
          }
        },
        {
          "output_type": "stream",
          "text": [
            "\n",
            "RobertaConfig {\n",
            "  \"architectures\": [\n",
            "    \"RobertaForMaskedLM\"\n",
            "  ],\n",
            "  \"attention_probs_dropout_prob\": 0.1,\n",
            "  \"bos_token_id\": 0,\n",
            "  \"eos_token_id\": 2,\n",
            "  \"gradient_checkpointing\": false,\n",
            "  \"hidden_act\": \"gelu\",\n",
            "  \"hidden_dropout_prob\": 0.1,\n",
            "  \"hidden_size\": 768,\n",
            "  \"id2label\": {\n",
            "    \"0\": \"LABEL_0\",\n",
            "    \"1\": \"LABEL_1\",\n",
            "    \"2\": \"LABEL_2\"\n",
            "  },\n",
            "  \"initializer_range\": 0.02,\n",
            "  \"intermediate_size\": 3072,\n",
            "  \"label2id\": {\n",
            "    \"LABEL_0\": 0,\n",
            "    \"LABEL_1\": 1,\n",
            "    \"LABEL_2\": 2\n",
            "  },\n",
            "  \"layer_norm_eps\": 1e-05,\n",
            "  \"max_position_embeddings\": 514,\n",
            "  \"model_type\": \"roberta\",\n",
            "  \"num_attention_heads\": 12,\n",
            "  \"num_hidden_layers\": 12,\n",
            "  \"pad_token_id\": 1,\n",
            "  \"type_vocab_size\": 1,\n",
            "  \"vocab_size\": 50265\n",
            "}\n",
            "\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "kdRIljYhI7Mi",
        "outputId": "957d93a7-bd8b-4864-85dd-f7ddb90a0768",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 170,
          "referenced_widgets": [
            "b421a3b1779a47f6be61e45a3f3140fd",
            "7abdbc46110941e6a06146ecca8d4ae7",
            "7ca09c13141845af85e6f03a375d3d7f",
            "cad4459cfece48dda101b5bca1d92d07",
            "58d9fb4ea67b4e1a8fbda6d3ed271fa6",
            "f46b2b4b9d4e4a8792e69d9897d60222",
            "6391112bde2b438092ad5238859c4a25",
            "a402de66b14147d99e0751f483ac0f11"
          ]
        }
      },
      "source": [
        "transformer_model = model_class.from_pretrained(pretrained_model_name, config = config)\n",
        "\n",
        "custom_transformer_model = CustomTransformerModel(transformer_model = transformer_model)\n"
      ],
      "execution_count": 22,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "application/vnd.jupyter.widget-view+json": {
              "model_id": "b421a3b1779a47f6be61e45a3f3140fd",
              "version_minor": 0,
              "version_major": 2
            },
            "text/plain": [
              "HBox(children=(FloatProgress(value=0.0, description='Downloading', max=501200538.0, style=ProgressStyle(descri…"
            ]
          },
          "metadata": {
            "tags": []
          }
        },
        {
          "output_type": "stream",
          "text": [
            "\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "stream",
          "text": [
            "Some weights of the model checkpoint at roberta-base were not used when initializing RobertaForSequenceClassification: ['lm_head.bias', 'lm_head.dense.weight', 'lm_head.dense.bias', 'lm_head.layer_norm.weight', 'lm_head.layer_norm.bias', 'lm_head.decoder.weight', 'roberta.pooler.dense.weight', 'roberta.pooler.dense.bias']\n",
            "- This IS expected if you are initializing RobertaForSequenceClassification from the checkpoint of a model trained on another task or with another architecture (e.g. initializing a BertForSequenceClassification model from a BertForPretraining model).\n",
            "- This IS NOT expected if you are initializing RobertaForSequenceClassification from the checkpoint of a model that you expect to be exactly identical (initializing a BertForSequenceClassification model from a BertForSequenceClassification model).\n",
            "Some weights of RobertaForSequenceClassification were not initialized from the model checkpoint at roberta-base and are newly initialized: ['classifier.dense.weight', 'classifier.dense.bias', 'classifier.out_proj.weight', 'classifier.out_proj.bias']\n",
            "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n"
          ],
          "name": "stderr"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "loo-WYhMI7DY"
      },
      "source": [
        "from fastai.callbacks import *\n",
        "from transformers import AdamW\n",
        "from functools import partial\n",
        "\n",
        "CustomAdamW = partial(AdamW, correct_bias=False)\n",
        "\n",
        "learner = Learner(databunch, \n",
        "                  custom_transformer_model, \n",
        "                  opt_func = CustomAdamW, \n",
        "                  metrics=[accuracy, error_rate])\n",
        "\n",
        "# Show graph of learner stats and metrics after each epoch.\n",
        "learner.callbacks.append(ShowGraph(learner))\n",
        "\n",
        "# Put learn in FP16 precision mode. --> Seems to not working\n",
        "if use_fp16: learner = learner.to_fp16()"
      ],
      "execution_count": 23,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "mGzwjMMiJIFf"
      },
      "source": [
        "# For roberta-base\n",
        "list_layers = [learner.model.transformer.roberta.embeddings,\n",
        "              learner.model.transformer.roberta.encoder.layer[0],\n",
        "              learner.model.transformer.roberta.encoder.layer[1],\n",
        "              learner.model.transformer.roberta.encoder.layer[2],\n",
        "              learner.model.transformer.roberta.encoder.layer[3],\n",
        "              learner.model.transformer.roberta.encoder.layer[4],\n",
        "              learner.model.transformer.roberta.encoder.layer[5],\n",
        "              learner.model.transformer.roberta.encoder.layer[6],\n",
        "              learner.model.transformer.roberta.encoder.layer[7],\n",
        "              learner.model.transformer.roberta.encoder.layer[8],\n",
        "              learner.model.transformer.roberta.encoder.layer[9],\n",
        "              learner.model.transformer.roberta.encoder.layer[10],\n",
        "              learner.model.transformer.roberta.encoder.layer[11],\n",
        "              learner.model.transformer.roberta.pooler]"
      ],
      "execution_count": 24,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "lp4k1KT4oioU",
        "outputId": "15024d8c-0152-4b46-da9e-54226bcf8c4b",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 1000
        }
      },
      "source": [
        "learner.save('untrain')\n",
        "seed_all(seed)\n",
        "learner.load('untrain')\n",
        "learner.freeze_to(-1)\n",
        "learner.summary()\n"
      ],
      "execution_count": 25,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "application/vnd.google.colaboratory.intrinsic+json": {
              "type": "string"
            },
            "text/plain": [
              "CustomTransformerModel\n",
              "======================================================================\n",
              "Layer (type)         Output Shape         Param #    Trainable \n",
              "======================================================================\n",
              "Embedding            [512, 768]           38,603,520 True      \n",
              "______________________________________________________________________\n",
              "Embedding            [512, 768]           394,752    True      \n",
              "______________________________________________________________________\n",
              "Embedding            [512, 768]           768        True      \n",
              "______________________________________________________________________\n",
              "LayerNorm            [512, 768]           1,536      True      \n",
              "______________________________________________________________________\n",
              "Dropout              [512, 768]           0          False     \n",
              "______________________________________________________________________\n",
              "Linear               [512, 768]           590,592    True      \n",
              "______________________________________________________________________\n",
              "Linear               [512, 768]           590,592    True      \n",
              "______________________________________________________________________\n",
              "Linear               [512, 768]           590,592    True      \n",
              "______________________________________________________________________\n",
              "Dropout              [12, 512, 512]       0          False     \n",
              "______________________________________________________________________\n",
              "Linear               [512, 768]           590,592    True      \n",
              "______________________________________________________________________\n",
              "LayerNorm            [512, 768]           1,536      True      \n",
              "______________________________________________________________________\n",
              "Dropout              [512, 768]           0          False     \n",
              "______________________________________________________________________\n",
              "Linear               [512, 3072]          2,362,368  True      \n",
              "______________________________________________________________________\n",
              "Linear               [512, 768]           2,360,064  True      \n",
              "______________________________________________________________________\n",
              "LayerNorm            [512, 768]           1,536      True      \n",
              "______________________________________________________________________\n",
              "Dropout              [512, 768]           0          False     \n",
              "______________________________________________________________________\n",
              "Linear               [512, 768]           590,592    True      \n",
              "______________________________________________________________________\n",
              "Linear               [512, 768]           590,592    True      \n",
              "______________________________________________________________________\n",
              "Linear               [512, 768]           590,592    True      \n",
              "______________________________________________________________________\n",
              "Dropout              [12, 512, 512]       0          False     \n",
              "______________________________________________________________________\n",
              "Linear               [512, 768]           590,592    True      \n",
              "______________________________________________________________________\n",
              "LayerNorm            [512, 768]           1,536      True      \n",
              "______________________________________________________________________\n",
              "Dropout              [512, 768]           0          False     \n",
              "______________________________________________________________________\n",
              "Linear               [512, 3072]          2,362,368  True      \n",
              "______________________________________________________________________\n",
              "Linear               [512, 768]           2,360,064  True      \n",
              "______________________________________________________________________\n",
              "LayerNorm            [512, 768]           1,536      True      \n",
              "______________________________________________________________________\n",
              "Dropout              [512, 768]           0          False     \n",
              "______________________________________________________________________\n",
              "Linear               [512, 768]           590,592    True      \n",
              "______________________________________________________________________\n",
              "Linear               [512, 768]           590,592    True      \n",
              "______________________________________________________________________\n",
              "Linear               [512, 768]           590,592    True      \n",
              "______________________________________________________________________\n",
              "Dropout              [12, 512, 512]       0          False     \n",
              "______________________________________________________________________\n",
              "Linear               [512, 768]           590,592    True      \n",
              "______________________________________________________________________\n",
              "LayerNorm            [512, 768]           1,536      True      \n",
              "______________________________________________________________________\n",
              "Dropout              [512, 768]           0          False     \n",
              "______________________________________________________________________\n",
              "Linear               [512, 3072]          2,362,368  True      \n",
              "______________________________________________________________________\n",
              "Linear               [512, 768]           2,360,064  True      \n",
              "______________________________________________________________________\n",
              "LayerNorm            [512, 768]           1,536      True      \n",
              "______________________________________________________________________\n",
              "Dropout              [512, 768]           0          False     \n",
              "______________________________________________________________________\n",
              "Linear               [512, 768]           590,592    True      \n",
              "______________________________________________________________________\n",
              "Linear               [512, 768]           590,592    True      \n",
              "______________________________________________________________________\n",
              "Linear               [512, 768]           590,592    True      \n",
              "______________________________________________________________________\n",
              "Dropout              [12, 512, 512]       0          False     \n",
              "______________________________________________________________________\n",
              "Linear               [512, 768]           590,592    True      \n",
              "______________________________________________________________________\n",
              "LayerNorm            [512, 768]           1,536      True      \n",
              "______________________________________________________________________\n",
              "Dropout              [512, 768]           0          False     \n",
              "______________________________________________________________________\n",
              "Linear               [512, 3072]          2,362,368  True      \n",
              "______________________________________________________________________\n",
              "Linear               [512, 768]           2,360,064  True      \n",
              "______________________________________________________________________\n",
              "LayerNorm            [512, 768]           1,536      True      \n",
              "______________________________________________________________________\n",
              "Dropout              [512, 768]           0          False     \n",
              "______________________________________________________________________\n",
              "Linear               [512, 768]           590,592    True      \n",
              "______________________________________________________________________\n",
              "Linear               [512, 768]           590,592    True      \n",
              "______________________________________________________________________\n",
              "Linear               [512, 768]           590,592    True      \n",
              "______________________________________________________________________\n",
              "Dropout              [12, 512, 512]       0          False     \n",
              "______________________________________________________________________\n",
              "Linear               [512, 768]           590,592    True      \n",
              "______________________________________________________________________\n",
              "LayerNorm            [512, 768]           1,536      True      \n",
              "______________________________________________________________________\n",
              "Dropout              [512, 768]           0          False     \n",
              "______________________________________________________________________\n",
              "Linear               [512, 3072]          2,362,368  True      \n",
              "______________________________________________________________________\n",
              "Linear               [512, 768]           2,360,064  True      \n",
              "______________________________________________________________________\n",
              "LayerNorm            [512, 768]           1,536      True      \n",
              "______________________________________________________________________\n",
              "Dropout              [512, 768]           0          False     \n",
              "______________________________________________________________________\n",
              "Linear               [512, 768]           590,592    True      \n",
              "______________________________________________________________________\n",
              "Linear               [512, 768]           590,592    True      \n",
              "______________________________________________________________________\n",
              "Linear               [512, 768]           590,592    True      \n",
              "______________________________________________________________________\n",
              "Dropout              [12, 512, 512]       0          False     \n",
              "______________________________________________________________________\n",
              "Linear               [512, 768]           590,592    True      \n",
              "______________________________________________________________________\n",
              "LayerNorm            [512, 768]           1,536      True      \n",
              "______________________________________________________________________\n",
              "Dropout              [512, 768]           0          False     \n",
              "______________________________________________________________________\n",
              "Linear               [512, 3072]          2,362,368  True      \n",
              "______________________________________________________________________\n",
              "Linear               [512, 768]           2,360,064  True      \n",
              "______________________________________________________________________\n",
              "LayerNorm            [512, 768]           1,536      True      \n",
              "______________________________________________________________________\n",
              "Dropout              [512, 768]           0          False     \n",
              "______________________________________________________________________\n",
              "Linear               [512, 768]           590,592    True      \n",
              "______________________________________________________________________\n",
              "Linear               [512, 768]           590,592    True      \n",
              "______________________________________________________________________\n",
              "Linear               [512, 768]           590,592    True      \n",
              "______________________________________________________________________\n",
              "Dropout              [12, 512, 512]       0          False     \n",
              "______________________________________________________________________\n",
              "Linear               [512, 768]           590,592    True      \n",
              "______________________________________________________________________\n",
              "LayerNorm            [512, 768]           1,536      True      \n",
              "______________________________________________________________________\n",
              "Dropout              [512, 768]           0          False     \n",
              "______________________________________________________________________\n",
              "Linear               [512, 3072]          2,362,368  True      \n",
              "______________________________________________________________________\n",
              "Linear               [512, 768]           2,360,064  True      \n",
              "______________________________________________________________________\n",
              "LayerNorm            [512, 768]           1,536      True      \n",
              "______________________________________________________________________\n",
              "Dropout              [512, 768]           0          False     \n",
              "______________________________________________________________________\n",
              "Linear               [512, 768]           590,592    True      \n",
              "______________________________________________________________________\n",
              "Linear               [512, 768]           590,592    True      \n",
              "______________________________________________________________________\n",
              "Linear               [512, 768]           590,592    True      \n",
              "______________________________________________________________________\n",
              "Dropout              [12, 512, 512]       0          False     \n",
              "______________________________________________________________________\n",
              "Linear               [512, 768]           590,592    True      \n",
              "______________________________________________________________________\n",
              "LayerNorm            [512, 768]           1,536      True      \n",
              "______________________________________________________________________\n",
              "Dropout              [512, 768]           0          False     \n",
              "______________________________________________________________________\n",
              "Linear               [512, 3072]          2,362,368  True      \n",
              "______________________________________________________________________\n",
              "Linear               [512, 768]           2,360,064  True      \n",
              "______________________________________________________________________\n",
              "LayerNorm            [512, 768]           1,536      True      \n",
              "______________________________________________________________________\n",
              "Dropout              [512, 768]           0          False     \n",
              "______________________________________________________________________\n",
              "Linear               [512, 768]           590,592    True      \n",
              "______________________________________________________________________\n",
              "Linear               [512, 768]           590,592    True      \n",
              "______________________________________________________________________\n",
              "Linear               [512, 768]           590,592    True      \n",
              "______________________________________________________________________\n",
              "Dropout              [12, 512, 512]       0          False     \n",
              "______________________________________________________________________\n",
              "Linear               [512, 768]           590,592    True      \n",
              "______________________________________________________________________\n",
              "LayerNorm            [512, 768]           1,536      True      \n",
              "______________________________________________________________________\n",
              "Dropout              [512, 768]           0          False     \n",
              "______________________________________________________________________\n",
              "Linear               [512, 3072]          2,362,368  True      \n",
              "______________________________________________________________________\n",
              "Linear               [512, 768]           2,360,064  True      \n",
              "______________________________________________________________________\n",
              "LayerNorm            [512, 768]           1,536      True      \n",
              "______________________________________________________________________\n",
              "Dropout              [512, 768]           0          False     \n",
              "______________________________________________________________________\n",
              "Linear               [512, 768]           590,592    True      \n",
              "______________________________________________________________________\n",
              "Linear               [512, 768]           590,592    True      \n",
              "______________________________________________________________________\n",
              "Linear               [512, 768]           590,592    True      \n",
              "______________________________________________________________________\n",
              "Dropout              [12, 512, 512]       0          False     \n",
              "______________________________________________________________________\n",
              "Linear               [512, 768]           590,592    True      \n",
              "______________________________________________________________________\n",
              "LayerNorm            [512, 768]           1,536      True      \n",
              "______________________________________________________________________\n",
              "Dropout              [512, 768]           0          False     \n",
              "______________________________________________________________________\n",
              "Linear               [512, 3072]          2,362,368  True      \n",
              "______________________________________________________________________\n",
              "Linear               [512, 768]           2,360,064  True      \n",
              "______________________________________________________________________\n",
              "LayerNorm            [512, 768]           1,536      True      \n",
              "______________________________________________________________________\n",
              "Dropout              [512, 768]           0          False     \n",
              "______________________________________________________________________\n",
              "Linear               [512, 768]           590,592    True      \n",
              "______________________________________________________________________\n",
              "Linear               [512, 768]           590,592    True      \n",
              "______________________________________________________________________\n",
              "Linear               [512, 768]           590,592    True      \n",
              "______________________________________________________________________\n",
              "Dropout              [12, 512, 512]       0          False     \n",
              "______________________________________________________________________\n",
              "Linear               [512, 768]           590,592    True      \n",
              "______________________________________________________________________\n",
              "LayerNorm            [512, 768]           1,536      True      \n",
              "______________________________________________________________________\n",
              "Dropout              [512, 768]           0          False     \n",
              "______________________________________________________________________\n",
              "Linear               [512, 3072]          2,362,368  True      \n",
              "______________________________________________________________________\n",
              "Linear               [512, 768]           2,360,064  True      \n",
              "______________________________________________________________________\n",
              "LayerNorm            [512, 768]           1,536      True      \n",
              "______________________________________________________________________\n",
              "Dropout              [512, 768]           0          False     \n",
              "______________________________________________________________________\n",
              "Linear               [512, 768]           590,592    True      \n",
              "______________________________________________________________________\n",
              "Linear               [512, 768]           590,592    True      \n",
              "______________________________________________________________________\n",
              "Linear               [512, 768]           590,592    True      \n",
              "______________________________________________________________________\n",
              "Dropout              [12, 512, 512]       0          False     \n",
              "______________________________________________________________________\n",
              "Linear               [512, 768]           590,592    True      \n",
              "______________________________________________________________________\n",
              "LayerNorm            [512, 768]           1,536      True      \n",
              "______________________________________________________________________\n",
              "Dropout              [512, 768]           0          False     \n",
              "______________________________________________________________________\n",
              "Linear               [512, 3072]          2,362,368  True      \n",
              "______________________________________________________________________\n",
              "Linear               [512, 768]           2,360,064  True      \n",
              "______________________________________________________________________\n",
              "LayerNorm            [512, 768]           1,536      True      \n",
              "______________________________________________________________________\n",
              "Dropout              [512, 768]           0          False     \n",
              "______________________________________________________________________\n",
              "Linear               [768]                590,592    True      \n",
              "______________________________________________________________________\n",
              "Dropout              [768]                0          False     \n",
              "______________________________________________________________________\n",
              "Linear               [3]                  2,307      True      \n",
              "______________________________________________________________________\n",
              "\n",
              "Total params: 124,647,939\n",
              "Total trainable params: 124,647,939\n",
              "Total non-trainable params: 0\n",
              "Optimized with 'transformers.optimization.AdamW', correct_bias=False\n",
              "Using true weight decay as discussed in https://www.fast.ai/2018/07/02/adam-weight-decay/ \n",
              "Loss function : FlattenedLoss\n",
              "======================================================================\n",
              "Callbacks functions applied \n",
              "    ShowGraph"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 25
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "AWnUoRNeo2XE",
        "outputId": "17694bd9-ff41-4dfe-b4a7-89770d1c5769",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 110
        }
      },
      "source": [
        "learner.lr_find()\n"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/html": [
              "\n",
              "    <div>\n",
              "        <style>\n",
              "            /* Turns off some styling */\n",
              "            progress {\n",
              "                /* gets rid of default border in Firefox and Opera. */\n",
              "                border: none;\n",
              "                /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
              "                background-size: auto;\n",
              "            }\n",
              "            .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
              "                background: #F44336;\n",
              "            }\n",
              "        </style>\n",
              "      <progress value='0' class='' max='1' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
              "      0.00% [0/1 00:00<00:00]\n",
              "    </div>\n",
              "    \n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: left;\">\n",
              "      <th>epoch</th>\n",
              "      <th>train_loss</th>\n",
              "      <th>valid_loss</th>\n",
              "      <th>accuracy</th>\n",
              "      <th>error_rate</th>\n",
              "      <th>time</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "  </tbody>\n",
              "</table><p>\n",
              "\n",
              "    <div>\n",
              "        <style>\n",
              "            /* Turns off some styling */\n",
              "            progress {\n",
              "                /* gets rid of default border in Firefox and Opera. */\n",
              "                border: none;\n",
              "                /* Needs to be in here for Safari polyfill so background images work as expected. */\n",
              "                background-size: auto;\n",
              "            }\n",
              "            .progress-bar-interrupted, .progress-bar-interrupted::-webkit-progress-bar {\n",
              "                background: #F44336;\n",
              "            }\n",
              "        </style>\n",
              "      <progress value='73' class='' max='25312' style='width:300px; height:20px; vertical-align: middle;'></progress>\n",
              "      0.29% [73/25312 00:53<5:08:22 3.7590]\n",
              "    </div>\n",
              "    "
            ],
            "text/plain": [
              "<IPython.core.display.HTML object>"
            ]
          },
          "metadata": {
            "tags": []
          }
        },
        {
          "output_type": "stream",
          "text": [
            "LR Finder is complete, type {learner_name}.recorder.plot() to see the graph.\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "4QPj02gHo7LT",
        "outputId": "2db6e00c-bbe8-4b49-ad26-08e970a21549",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 313
        }
      },
      "source": [
        "learner.recorder.plot(skip_end=10,suggestion=True)\n"
      ],
      "execution_count": null,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Min numerical gradient: 1.10E-04\n",
            "Min loss divided by 10: 1.32E-05\n"
          ],
          "name": "stdout"
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": [],
            "needs_background": "light"
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "Is4oFNhKo90-",
        "outputId": "6f0aa998-5f62-4906-9a32-4befd18d2997",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 325
        }
      },
      "source": [
        "learner.fit_one_cycle(1,max_lr=2e-05,moms=(0.8,0.7))  #0.846044"
      ],
      "execution_count": 26,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/html": [
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: left;\">\n",
              "      <th>epoch</th>\n",
              "      <th>train_loss</th>\n",
              "      <th>valid_loss</th>\n",
              "      <th>accuracy</th>\n",
              "      <th>error_rate</th>\n",
              "      <th>time</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <td>0</td>\n",
              "      <td>0.409235</td>\n",
              "      <td>0.414954</td>\n",
              "      <td>0.846044</td>\n",
              "      <td>0.153956</td>\n",
              "      <td>1:31:34</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>"
            ],
            "text/plain": [
              "<IPython.core.display.HTML object>"
            ]
          },
          "metadata": {
            "tags": []
          }
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAD4CAYAAAD8Zh1EAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO3dd3xUVfo/8M+TQkJoktATIKFJ6CVA6IiIFAUUEWxrZ3EV3a/406ygoqCyumtbURfsroKADQUEERAEKaF3CBAgBCkBQoD0nN8fU3Jn5k5LbnKT4fN+vXw5c+eWczPDc8895znnilIKRERU+QWZXQAiIjIGAzoRUYBgQCciChAM6EREAYIBnYgoQISYdeDgiFqqc5uWZh2eiKhS2rx581mlVF29z0wL6CG16iE5OdmswxMRVUoictTdZ2xyISIKEAzoREQBwrSAHhwkZh2aiCggmdaGzhkHiMhf+fn5SEtLQ05OjtlFKXPh4eGIiYlBaGioz9uYF9DBiE5E/klLS0ONGjUQGxsLkcC9y1dKISMjA2lpaYiLi/N5O/Pa0BnPichPOTk5iIqKCuhgDgAigqioKL/vREwL6IznRFQSgR7MbUpynqZmuRQVMawTERnF1ICeX1Rk5uGJiPxy4cIFvPfee35vN2zYMFy4cKEMSuTI1IBeyBo6EVUi7gJ6QUGBx+0WL16Ma665pqyKZWdqQN92rOyvWERERklKSsKhQ4fQqVMndOvWDX379sWIESPQpk0bAMCoUaPQtWtXtG3bFrNmzbJvFxsbi7NnzyI1NRXx8fF4+OGH0bZtWwwePBjZ2dmGlc+0tEUASDlzCb1a1DGzCERUSb34427sSb9o6D7bNKqJF25u6/bzGTNmYNeuXdi2bRtWrVqF4cOHY9euXfbUwo8//hiRkZHIzs5Gt27dMHr0aERFRTns4+DBg5gzZw5mz56N22+/Hd988w3uvvtuQ8pvag19zsbjZh6eiKhUunfv7pAn/s4776Bjx45ITEzE8ePHcfDgQZdt4uLi0KlTJwBA165dkZqaalh5TK2ht4+uaebhiagS81STLi/VqlWzv161ahWWL1+OP/74AxERERgwYIBuHnlYWJj9dXBwsKFNLqbW0Ae2rm/m4YmI/FKjRg1kZWXpfpaZmYnatWsjIiIC+/btw/r168u5dCbX0AuYtkhElUhUVBR69+6Ndu3aoWrVqqhfv7hSOmTIEHzwwQeIj4/Htddei8TExHIvnygvs2SJyMcAbgJwWinVTudzAfA2gGEArgC4Tym1xduBwxq2VPOWrMLITtElKjgRXX327t2L+Ph4s4tRbvTOV0Q2K6US9Nb3pcnlUwBDPHw+FEBL63/jAbzvU0kBFBQyD52IyCheA7pSajWAcx5WGQngc2WxHsA1ItLQl4OzyYWIyDhGdIpGA9DmH6ZZl7kQkfEikiwiyQBQwJGiRESGKdcsF6XULKVUgq39h00uRETGMSKgnwDQWPM+xrrMK9bQiYiMY0RAXwjgL2KRCCBTKXXSlw0L2YZORGQYrwFdROYA+APAtSKSJiIPisgEEZlgXWUxgMMAUgDMBvA3Xw+efiHwnwtIRFev6tWrAwDS09Nx22236a4zYMAAJCcnG3I8rwOLlFJ3ePlcAXi0JAf/dF0qpo4wf/guEVFZatSoERYsWFDmxzF16H/bRpzLhYgqj6SkJMycOdP+furUqZg+fTquv/56dOnSBe3bt8cPP/zgsl1qairatbOMy8zOzsa4ceMQHx+PW265JTCmzw0SQbfYSLMOT0SV3ZIk4M+dxu6zQXtg6Ay3H48dOxZ///vf8eijlkaJefPmYenSpXj88cdRs2ZNnD17FomJiRgxYoTbZ4K+//77iIiIwN69e7Fjxw506dLFsOKbVkMvUgo/7fCp75SIqELo3LkzTp8+jfT0dGzfvh21a9dGgwYN8Oyzz6JDhw4YNGgQTpw4gVOnTrndx+rVq+3zn3fo0AEdOnQwrHymTs519lKumYcnosrMQ026LI0ZMwYLFizAn3/+ibFjx+LLL7/EmTNnsHnzZoSGhiI2NlZ32tzyYGobOhFRZTN27FjMnTsXCxYswJgxY5CZmYl69eohNDQUK1euxNGjRz1u369fP3z11VcAgF27dmHHjh2Glc3UGjoRUWXTtm1bZGVlITo6Gg0bNsRdd92Fm2++Ge3bt0dCQgJat27tcftHHnkE999/P+Lj4xEfH4+uXbsaVjYGdCIiP+3cWdwZW6dOHfzxxx+66126dAmA5SHRu3btAgBUrVoVc+fOLZNymdbkUjM8FK0b1DDr8EREAce0gC4C5Bdy6D8RkVHMC+jg5FxE5D9vT1kLFCU5T/OyXITT5xKRf8LDw5GRkRHwQV0phYyMDISHh/u1nWmdogJBIWvoROSHmJgYpKWl4cyZM2YXpcyFh4cjJibGr23MC+jCR9ARkX9CQ0MRFxdndjEqLLahExEFCBOzXIRt6EREBjK5hs4mFyIiozDLhYgoQJjehh7o6UdEROXF1DZ0AExdJCIyiKk1dICZLkRERjG1DR1gQCciMorpNfRCdowSERnC9Db0fKYuEhEZwvwaOptciIgMYXpAZxs6EZExTH3ABQDkF7DJhYjICCZmuVgiOof/ExEZw7SAbjtwXgGbXIiIjGB6kwtr6ERExjCvycXaLcoHRRMRGcP0GjqbXIiIjOFTQBeRISKyX0RSRCRJ5/MmIrJSRLaKyA4RGeb1wGxyISIylNeALiLBAGYCGAqgDYA7RKSN02pTAMxTSnUGMA7Ae94PzSYXIiIj+VJD7w4gRSl1WCmVB2AugJFO6ygANa2vawFI97ZTex4653IhIjKELwE9GsBxzfs06zKtqQDuFpE0AIsBTNTbkYiMF5FkEUm+cP48ANbQiYiMYlSn6B0APlVKxQAYBuALEXHZt1JqllIqQSmVEBkZCYABnYjIKL4E9BMAGmvex1iXaT0IYB4AKKX+ABAOoI6nndrmcjly9opPBSUiIs98CeibALQUkTgRqQJLp+dCp3WOAbgeAEQkHpaAfsbTTm2PEv1qw1H/SkxERLq8BnSlVAGAxwAsBbAXlmyW3SLykoiMsK42CcDDIrIdwBwA9ykvT38OCbHU0WtVDS1F8YmIyCbEl5WUUoth6ezULnte83oPgN7+HDjYmuYysHU9fzYjIiI3TBz6D1QPCwH7RImIjGFqQA8JFo4UJSIyiLkBPSiIA4uIiAxiakAPDRYUsM2FiMgQpje5cGAREZExTK6hByGfD4kmIjKEuQE9KIhNLkREBvEpD72s7D+Vhf2nsswsAhFRwDC1hk5ERMZhQCciChCmBvRRnRqhSWSEmUUgIgoYJqctslOUiMgoTFskIgoQpo8U5cAiIiJjmF5DL+BcLkREhjA1oF/JK8Cl3AIcOnPJzGIQEQUEUwP6nI3HAQDX//s3M4tBRBQQmIdORBQgTA3oHWNqmXl4IqKAYmpAr1ol2MzDExEFFFMDOp9WRERkHFMDepFiQCciMoqpAf3tsZ3NPDwRUUAxNaA3ieLEXERERjE9bXFsQmMAwMWcfJNLQkRUuZke0L9Otgwu6jB1mcklISKq3EwP6EREZAzTA3qbhjUBAF2b1ja5JERElZvpAd0msloVs4tARFSpmR7QXx/TAQDQlI+iIyIqFZ8CuogMEZH9IpIiIklu1rldRPaIyG4R+crXArRtZJnPZd2hDF83ISIiHSHeVhCRYAAzAdwAIA3AJhFZqJTao1mnJYB/AOitlDovIvX8Lciekxf93YSIiDR8qaF3B5CilDqslMoDMBfASKd1HgYwUyl1HgCUUqdLUhg+MJqIqOR8CejRAI5r3qdZl2m1AtBKRNaKyHoRGaK3IxEZLyLJIpJ85swZl89zCxjQiYhKyqhO0RAALQEMAHAHgNkico3zSkqpWUqpBKVUQt26dV12wgdGExGVnC8B/QSAxpr3MdZlWmkAFiql8pVSRwAcgCXA+2XXCbajExGVlC8BfROAliISJyJVAIwDsNBpne9hqZ1DROrA0gRz2NdCdI+NBADc/dEGXzchIiInXgO6UqoAwGMAlgLYC2CeUmq3iLwkIiOsqy0FkCEiewCsBPD/lFI+5yGGBIv/JSciIgde0xYBQCm1GMBip2XPa14rAE9a//PbsXNX7K+zcvJxObcQDWqFl2RXRERXLdNHigLAvT1j7a+HvbMGia/+al5hiIgqqQoR0B/qG2d/ffxcNgBA8fF0RER+qRABXcS1Df3tXw963a6wSGH4O2uwbPefAICiIoXFO0+iqIgXAyK6+lSIgK5n9mr3STLrUs7i07VHcCmnALvTL2LS/O0AgFlrDuNvX27BlB92lVcxiYgqjAoT0B/oHefw/nJeodt17/xwA6b+uAeF1maZrJwCAMDPuyw19a82HCujUhIRVVwVJqBXCXEtSk5+IQo9NJ8UadrZ/7f+KMJDLftoXreaw3r5hUVYsDmNTTFEFNAqTEB/oE+sy7LWz/2MZ77ZgbOXcvGHzvS6l6w1cwCY8v0urD98DgAQb30Kks0/vt2Jp+Zvxw/bnQe4EhEFjgoT0GuGh+ouX7A5DQNeX4U7Zq8HAHsHKAAM+Ncq3W1+2nHSZR8AcDnXfTOOUU5cyEZmdn6ZH6e0Us9e9nj3Q0SVT4UJ6GE6TS42l3ItNfHCIoWNR86V+BhTvi/7ztLeM1ag44vLDNnX91tPIDZpEdLOX4FSCgdOZRmy38NnLmHAv1bh8TlbDdkfEVUMFSag66UuOjt7KRffb6u4zSYnM7MN3Z/tXA+cysJXG49h8Jursf5w6Z/s9O6KFADAop0nvaxJRJVJhQnovujxyq84eynPp3VTTl/ya9/Hz11BtofMGl88/Hmy/XVJH9aRX1iE3AJLOWyXOKWKM3j2enmy0/jPk/Hij7s9rrM7nbNaEgWiShXQ/THojd/sr69v7fhEvO3HL+D3g2ft79cdOou+r61E/PM/25f9sO0Ezl327eIBAF2m/eIw/e+sNT5PNolLuQX2C0CvGStw7RRLOYKsdy0Zl/KwxlrevIIiKKVcynb83BV8uvYIlu05hU/Wpuoe58ft6dh+/AIe7tfMYTsiCgwVKqD/8n/9sDZpoKH73HjkHH7dV/xEvKIihZEz1zpM1attW88rKMLmo+fxxNxt+NuXm3X3eTm3ANuPX3BY5hxgX/t5v8P71s8twTtOo193pF2AUgrtXliKFpOX4Ob//I4zWbn2z21dlk9/s8O+LONyHr7fdgJdpv2C3emZ9uW3vLcWU3+0P+bVxY/b0zFxzlaMnLnWId2z72srsetEpsO6H/1+BLFJi7Bi3ym3+3O25dh5PGUd4OXscm4B/szM0f1s9Pvr8KGbi9/xc1ewKbXkfSb+6PvaCo+D2YgqgwoV0FvWr4Hoa6oaus/b//uHw/tmzy52Wefwmcv2162mLMHo99cBAA6eKm62uZJXYH+i0v99vQ0jZ65F5hXP2SzvrigO4Dn5RXjjlwP294t3nsSId9fi603FT/fb6RRY9Z7gVLd6GH7bb3l83/bjmcjJtzTPODdFxSYtwt0fFl+0Jmo6QJ9esMNh3Zv+87vD+2k/WS4MT813XM8dpRRufW8dFmxOw3urUlw+Hzlzre6Eaymns7D56HlMX7RXd7/9X1+JMR/8ofuZO7kFhfhsXarfGTzHz2Xj5cWWchw4lcW5hKhSqlABvaLJuJyH3IJCDPzXKrR5fike+HQTAGCPtR3bW3riv5ZZAritTVzLdrFI+nan2+3zdJ6x+vLivcjJtyx/9rudaP3czziacdllPQD4PeWs7nJf2e46iooU5m067vYRgfv+LM6+cb4zyc4rdOnPKCgswrpDZ/HeykMej2+LybFJi9DxxWU+9YsMfXsNXli4G+1eWOp1XZvTF4vvHt5fdQiD31yN2da7hg/XHMbmo+Vzl0BUWhUyoE8ZHm/IfryNDP1k7RG8vdzzJGDXTvkZh89aAqatHTvtvCWbZe+f3jsX8wuL8Ove4iafD9ccxvB31uBXH5ozNrhJ0fxZk4sPAP1fX+V1X94cyyhuSx/StoHDZ62f/xlPf7MDr/28T3fbIJ0MpZTTWfh510mMnOlY+7+Yk49WU5bgztkb8O1Wx4yl7LxCfLM5Tbd2nJmdj4c+2+T1PGx3W9n5vndw52kuVP+0nqOt6Wv6or0Y/b5/dwnl5de9p9D95eUcT1BBzd14zK9mSyNUyID+UN9mSJ0x3Kd1P7i7q9vPcnVquFov/rgHby4/4HEdZzmaQPGShzZrm9eX7sen61Lt76cv2ovd6RexIy3T/UZWrRvU8KtspbH1+Hn7a+0F4/zlPPudwuw1R3S3VXAMKGsOnsGgN1Zjwv+24MApx1p1h6nL4C7+vLx4DybN3475yWm6n6dmXMFaD3cdsUmL3H7myeaj512WZWjOu7w8PmerXwHgwc+ScTorFwdPGzM+obQyLuX6lUhQlgoKizDkrdXYkXbB+8pl4LN1qUj6dice+DTZ+8oGqpAB3R/dYmu7/UybtWKUORuLJ/46ccFSU/eUKfLZutQSDYb6fusJh6aMsvbE3G1oP3UpsnIcm5E6T/vF67af/3HU4b22X0BLr33dJjZpEf633vK31XYCO7Pl4a/YdwqxSYtw4UoesvMKdYP5ukP6wf+HbScw+v11iE1ahMnf7cTWY67/6L/dcgKtpixxWw6jKaWwcHs6Hvg02W3TVl5BEc5eynVZPuStNWj9nH5ZH/osGbFJi3QvWkbrOn05uvjweykPC7enY9+fWRjx7lpTjv/CwuLUYVucKA8VOqA7T7Kl9fjAFgCAyGpVyqs4AOCQmghYmgn6vrbS7fre7hLc+fvX20q0nbOU05fwzWb9Gu9rt3VweJ+VU+DQkeor59kt3TUAOLevV6sS7Pex5lovFramstlrDru9cN85W/9cnpi7zR7gvtxwzG3g1zLi1jm/sEh3fELmlXzE/aO4s/5mp05qm4lztiBh+nLdgG/rV9H6MzMHy/daym3r6PdVVk4+Vu0/7XBHWpn8eVE/q8qmsEhh0Bu/YalT86URthxzvHjeU4J/UyVVoQP6ZDdt6S3qVceTg69F6ozhEBE0iYzAQ33iMPPOLjjy6jCEBPn/0OnRXWLw/aO9va73zRbH4Hjnh+sd3q+Y1B9//MPY1MvS+N/6o/b54rUmDmyB2xMa47auMQ7Lt/vQFARY2sInztmKC1dcb7EP+Hhn4WmKZHdsbdu2cs700rF6MScfOfmFHqdNcG4W0qN363zgVJZfta+Wk5eg54wVLst7znDMAHK+M8vJL0RBYRGW7rYE51cW62cFxSYtchhJvPrgGZ/KFZu0yOUOJ+mbnbjvk01o/dzPup36NsPfWYPYpEVu7ypKIv1Ctu7vyh/1a3h+JvHF7HyknL7kkvFlhH8ucexrulCOcztV6IA+sHV9++snrm8JALivVyx+fKyPw3qrn74OU25qg+EdGkJE8PmD3V325am2DwCxURGoWyPM7zI6365XCwtBw1pVsXPqYL/3VRa07fdaT97QCgBQq6r+pGh6tMH/w9WH8eP2dN10xIN+jtLV461mGOXjnVmHqcsw7J01GPzmasMnTRv85mr01gTolNNZmPCF/tgFG+04A5srHi5sWTn5aP3cz7hZ03Rw4nw2ftyejo4xtVzW/8+Kg1ibchaxSYuwyYemPneJA9ppIa54mNTONurYn05ob3rNWIFOLxU33Rw5e9nvqa8bah4yn3b+Cvq9tlL34uvPfk9dzHFIHki/kO1SGwdckxlKUL8ssZDyO1TJLH68L46du4yBresjokowHugTh9Bgz9ehLk1c29UPndFP7bMRARrV8nxV94WtbOGh/jUnTB/VDlO+34Xoa6qWS5ubbe6cmNq+5/0v2JyGWztH407NLaTerb4R8jzU+PIKipDhR+ebLfMl80o+qoeV3U9+0BurAQCrD5xBv1Z1Ddln+6mWid60Uz4s23MKy/boNwGtTcnA2hRLLX2+m6Y2rQJNQCssUgjWiT6+1L49Bf3S2P9nFm58azW6Nq2Nt8Z2glJAk6gIZGbnY8PhDAx2ysiy0f5+vt50HMfOXcFHa47g+ZvbACh+lkJWbgHWH85AYrMoAJZBcFk5BWigEwt6vFJceVnyRF+MePd35BcqpM4Yjinf70RocBBeuLmty3YXNdN8O/tqwzH0bB6FuDqeK5y+qtA1dABo06gmhrRriCohQfhr/+ZegzngeeZGd77ZcsJhgrDdL97oMq+6L2wBw59mn51TB+PuxKY4MH0oJgxo7tfxlj/Zz+H9kif6ul03NioCAHB7QnFN+6YOjfw63n2fek8dNEKuhwvFHi/z2biTU1CIJbtKPiHZuct52GdNVT3loY3WNtJW2wm8VVOTq0iDlgqKiv/Of3Vzd5HvVIuNTVqEO2c7NjX+ste/PoaMS7lIt1ZcCouU7iA9y2hlS8rv5qPn0fe1lej3+kpkXslHxxeXYfwXmx2m8DiTlYthb6/BiQvZDv01py9a7oo+XlucpaW9kI2btR6HzljuKtu+sFT3rtPZ0LfXIL9Q+4CdY26n3HCXLaWUwrPf7XTbZ1ISFT6gl4TzzI0LH+vt0lbs7Ig11/zIq8Nw5NVhqBYW4jE4umN78pLe7JH/e7AHmulciW0XgSohQejf0rFm16Cm57uGFvWKUxtrhoegnodmo9SMK0idMRyv3dbRviw0WP/CM3d8ou7y8krl+2lHOgDg5o6uF5xRM0uWuWAZMKSfeumLLtN+wZC31uD4uSu49+ONbtf77YCl7doWVNamnMUt7xV3Stoe1vLYV1tKnGppFG1QWu4mKOdrvnNbU9g6pwfOPKeZPuNybgFikxZh0jz9qSAAS0ZMrxkrkJ1XiObPLkbHl5YhKycfl3Mda7MXc1wDfceXiqen1vYnfPT7Eew5eRG3vrfW4aJ/TURxs2JeQRHWpZy1jzewSU4955DhVdKLrq9jAlJOZ9kvVpdyC7Bi3ylM/s79IENfBWRAd7Yn/SL6tKhjf9+1qWuTzKB4S3u9iOgGY1tWjSdVvNw99GlZByueGuCyXHu8JlERuK9XrP29tjadNLS1x6yejZMH6T7Kz5MQN2Vu28j/uxMjvWjN8T9mTQlt5qUPxObdOzt7/Nx5Dh5PqoQE4d6eTV2Wz9+c5tJx6W7q5PjnfsZdTlkOl3ILMGnedpcHsWjZUjKNVlSkMOGLzYhNWoS3lx/EjW+u9rqNtvnC052TTYZ1GgpbAsHKfacRm7RIdwzBt1uLm4VGv78ObZ1G+L6/ynOn956TF/HE3K3IyS/EB79Z1j110bGfomlU8W+n1ZQluPPDDfh2i+Ogtme+2enwPWmz0zKz8z3m11/JK74IzXIzH9A6p3Mf9MZqPPhZcUf7A58m48sNxzB34zFsOXYe//3N83m7c1UE9B7NojCoTXEH69fjEx3arOIb1sSse/QHKG1/fjD2Tx+CJwdf6/U4N2iO4axJZITLsvkTeuLlW9q5LE8a2tr++qF+zbDm6eswvH1D3NcrFvckugaYaaPaYf6EnggPDfYY0Pe+NMRlmbumoRrhoVjn50RpX2g6o6OqVcG0kW0xpG0DrHn6Oof1HuoT57ypW7YAPLSdflupM3+bkDyZMjwek250/d6dJ1k7dTEHBYX6NTO9zsLxX2x2yZbS0/1l77f+vhhjvTt9Yu5WPL9wl33g2JvLD7ik9+llvHy14Rj++9shZF7Jx39WeB5ZDQAf/V4c1P7MzMH91ma6fy/b77Lu5O+Ka/a+ZBvp+WFbOt7yMOJ7hWZyPk+0g/1W7bdchL7dkoaOLy7zmF9/WnMB0db8ezWPsr9OOVN8bp46YpO+3Ylb31uHV5fsK9EzkAM+oL81thPi6lRz6AwLCQ7Cikn97e+/f7QXgtwEtloRoQgLCbbvyxN3tcOnh1yLb//Wy/5++ZP9sPzJ/ugWG4m7ergG6PDQYKTOGI7UGcNRMzwUjSMjMPOuLggPDcatXaJR1anD9Z7EpugWGwnA811CVZ28b099Eo00E6VNtXYmuVM7IhQ94op/wGueuQ739IzFB/d0RePICPxrTHEzz5SbPO9Lq16NMGx/fjAm3XAt6lQ3bsyB3r6cp1k+eynP610XALz00x6PYxFKylPHsD9snaM/bEu3D97yx6frUvHqkn3o+NIyfPh7cZOVu1GYn2kGmmnbo49mGDNVs+1h8FqeLpDumpI8mfC/LQCAJz00G9n8+xf90eZfPVzcbKltqtRO7e3Jf0sw+2fAB3RtFse8v/bEL/9n6US0NXP8tV8ze8D2ZmQnS+2vSnAQHtTUMpvXrYaFj/V2+9SlhKaRqFO9uG27Rb0aaFGvun8nYtU0qhr2TrPUtDs3ucblc1sZnAftuJtKQS+rYctzN7gsu6+351p1/Zrhmv4DIKKKYzbJ6C7RHrcHgC8f6uEyFqBn8yjUighFUJCgmpcMlZl3dvF6DBvnQVUA8Oqt7fHOHcUX5SrB4lO20iIPTSf+8qdDP0Gn6bA8+TsK05aZVNq5Z/Qyq/TSQcuL3qRxzunAtSOKKxC2uaG8cZ5WuqhI4RkvefMVPm2xtLSdPt3jIh0+83W+GBsRwfRR7dAjLhIt69fAlOHxyC0o8vqPvmmUa3NLaW1/YbBuTQUA3rurC9o2qomIKiHo9vJyv7N+SjL61pbatuqpAbqBV0RQp3oVPGC9EO6cOhjtpy7Dfb1i8VDfOBw5exm9W9Rxuc18dljx4DJvNbzhHRoCADY+ez26W1PMJt3QSrcGFVenOurXDMOpi7n4enwithy7gHo1wzGiYyP7s1b9TT0tjahqVZAQWxsXruS7nZTN2YJHeiFh+nKcvZSL1BnD8cO2E3hirusI444xtXweMFbWzO4ELgvaNnQb54vtpPnbMbprjD2zxxfXxzveMZ6/koevk/Wn1bAJ2IBeq2ooMrPz/Ro444u7NW3YIr7V4Op7yVQpCU/nNay9JbBd1jxc25O54xPRNCoCPV91HcWo9VCfOGw4cg7f/q0XWk52nDvElgYW6yGfNnlKcc2/RniowwU1prbloufc9KUdQNS1aW2f5iSpVzPcYd96Ab1GeAjWPjMQ6Rdy0CQqAj2aFbtVo+wAABCvSURBVDcXbX9+MF5ftg/3WDtE69YIK/Ma4MP9mmFC/+YY+1//ZnZclzTQPjnayE7RugF94sCWeOhzz5NEhQaLQ+UnENSOCMV5L88sMIJeReMRN+nHn6z1PctqXnIaIquF2fvUdpzwflH2qeomIkNEZL+IpIhIkof1RouIEpEEXwtdVpKnDMLX4xPRxsRsjTVPX+fQVl/ebDVzbxe1xGZRaFirKuY8nIgP/+L41XVtWtveiTnlpjb4cWIfhAYH4fArwxzWyzcwnVHbQa3Nwvn8ge6IsDYldW5yjUMtqHeL4oDs7JP7u7mM1qtTPQwhwUFoonP3VCsiFNNHtbc3xa1LGugxHbS0WtSrjvF9LY8FfNDHDmNb1laVkCC3TYZPDW6F7/7WCz48f71SBPOBTn0c3rgLqqXl/NvXY5ti+x+aBAfA/Yyl7nygyXa5/xPvY0C81tBFJBjATAA3AEgDsElEFiql9jitVwPAEwDKbyYaD0KDgxxqXWZorJPZUp5CgoPw8i3t0Kt5He8rw9Je7eybR3rprGmpSTeOrIpRnaLxnxUpLoNPSmNw2wbYN22ISw5ytbAQ7HlpCLJy8hEeGowgERQWKSQfPYeOMa79CTbXXVsPkdXC7DMVOg/G8iY0OAgbJw9yaS4Y162xfbKwkph0QyvUrxmOIe0b2O9MPI0w1R5vhE5+vla9GmF4bKBluowMnRkafZE8ZRASpi8v0balMaZrjO4o1z4t6vicsQJY5md6ZbH+HP6l4S6BQuuk9ZGLt3WNwavWuV3KYwS4LzX07gBSlFKHlVJ5AOYCGKmz3jQA/wTgeZozKld39Whq2LBiZ2ueHojHrPn5trl2jBIeGox6biZYqhEeitDgIAQHCaqEBKFX8zpeO0ynjrBk1tyT2NRhMFZp/KVnrMP75nWr4d9jOuJ/D/bAvmlDMF7zMO6nBrfCVqfO5keva4HbuzVGzfDiO6jw0GCXNE+bu3o0taettqjvuVP9AU1NP6q6492FdkyGO6kzhqNO9TCMTWjsdd0tz92Anyb2wb5prmmxJTFtVDuXsSIbn73ePlbE5pP7u7kd/HfolWGoEa5/Z/rJ/d08Hl9v8J+/bP/mQjX9V711JmbzxcnMbPR/3bcsKl8CejQAbTUkzbrMTkS6AGislPLY4yEi40UkWUSSz5zxbSY4qtjCQiwplnfr5MdXJDd1aIRDrwzDtFGuef++0rbLTx4WjzaNaqKlJlvpkQEtMLprDPq0rIPw0GAM1oxL6NOyrsOIRcB9Tc/5zm7rczdg+qh2aB9TC1NHtMVPE/vozlek1T7aceKuMZqR0rbcfu2zBFq5uUAMbe85/3/+hJ6IrFYF7aJrlaoT2Zby++VDPRAeGuxyZ1ivZjgiwor337ZRTVx3bT2X6TneGtsJz93Uxn6x1zOgVV2HsR7O5v41EW/c3hE/TXScBLBZnWr29ON20TXRLtrx2NrMsjbWcoUG+Z6Q4C5FtuerK3xO+Sx12qKIBAF4A8Akb+sqpWYppRKUUgl16xozeRGRr/RSNP1lG8Vra5f+5cniPpJG1zjeUWgDdseYWm7TWr2pXa2K/YIZHCRoF+06y6LNvmlD8M/R7R0GtQDA65pxAHclNkXqjOGYP6EXXhxhGfw1pmtxTXyHZqbQto3cHwvwPjrak+Wav91NHRrh4MtD0Vtz9zCum+PdQZ3qYRjdJQaTh8Vj0ePFNfP/pxn8NapztNd+CBHBhP7N7QHbud+oXo1w3NolBu2ia9kz1IKDBCueGmC/kP40sS9+mtjXZb82tt+C3tgPd2pFlD6Bw5dv4wQA7V82xrrMpgaAdgBWiUgqgEQACytCxyiR0To1trTVN69bXKM98uow/PBob5e+Clvt/dbO0S7B3IiZPfWEhwZjbLcmHi8ej15X3Fl4by/L4K8wawrs3YlNHJqA6tYIc0nv1Q7A2u9mnvlpo9ph4+TrUad6FbdTV7eoVx2Th8Vj2kjLDIXOg9xswV3b+f3v2zviYU1TFuBb7v67d3bGv8Z0xOOapsF20bWQOmM4BrWpj42Tr0f/VnWxecogh+2WP9kf9/WKxdpnvI+avqSZh8bdlBp6vrPW+ktzcbQf14d1NgFoKSJxsATycQDutH2olMoEYP8li8gqAE8ppcr3YXpE5WBU52i0bVQTLesXt8OLCDo2du2UdU7NtGkaFeF14rc2DWuWeFZJd7rF1sam1PO6bctR1cIc/u/Oz3/viyaREWjzvGXOle6xjmM7ereIwtqUDNzRrTFCgoOwafIgKAXc+8lG+0PWtZyDs5YtUHubxyfLw/S0Nt6mhKhXIxyfPeD6HIXQ4CBMHeE6Ja4/3HWeL3ysN2pHVLE3VfWIi8QzQ1sjr6CoxCOPvQZ0pVSBiDwGYCmAYAAfK6V2i8hLAJKVUgtLdGSiSkobzP11YPpQBIn3Gty8CT3R7oWlukGmpD69v7vbR7MNa98A/x7TUXd2S8DSKVmoFBrWcpw/37m9/8uHHGfptEx2Z5k1Uy+ge3J9fH1MuqEV7u0d63E928yceg6/Msw+93lZ+88dnTFxzlaXCd0GXFtPN6B30GRm/TSxD1rUq17qwWw+DSxSSi0GsNhp2fNu1h1QqhIRBTBfZ8OsHhbi90hmb6qFhTg0FWmJCEZ7mGK6ntPguNl/ScCiHek+90uM6RqDfi3r2ud22f3ijV63CQ4STPQhe6pBrXC3D7AJChIEoeweGfTJ/d3s+eHD2zfEmaxc3NG9icM6vjxExlO/iM24bo3x/M1tUO2f7tcJ+LlciMh4N7Spj7fGeZ6qWEtEHJ4C5C3N1B8jO1mS7nydkdNIAzTjBoKCBA/0iXPpCHUO1hP6N3foyNWjl4VzU4dGLnMkOQvYof9EVPFMHNiiRE8C86RmuCWMFRg4uM1XIoIfHu0NX4+cNLQ1JvT3PoJ1Qv/m9vVsA9oW7UxHn5aexxAwoBNRuZnkw3MF/GWr7dcow+fFeqLXIe7smSGtMT/5OB7u674T2JuHfNiWAZ2IKrXezevg2WGtMbZbE+8rm+SRAc1LPbeML23xbEMnokotKEgwvl9zw2dWrShevqUdOje5xqfnNrCGTkRUgd3Vo6nuk830sIZORBQgGNCJiAIEAzoRUYBgQCciChAM6EREAYIBnYgoQDCgExEFCAZ0IqIAwYBORBQgGNCJiAIEAzoRUYBgQCciChAM6EREAYIBnYgoQDCgExEFCAZ0IqIAwYBORBQgGNCJiAIEAzoRUYBgQCciChAM6EREAYIBnYgoQDCgExEFCAZ0IqIA4VNAF5EhIrJfRFJEJEnn8ydFZI+I7BCRX0WkqfFFJSIiT7wGdBEJBjATwFAAbQDcISJtnFbbCiBBKdUBwAIArxldUCIi8syXGnp3AClKqcNKqTwAcwGM1K6glFqplLpifbseQIyxxSQiIm98CejRAI5r3qdZl7nzIIAlpSkUERH5L8TInYnI3QASAPR38/l4AOMBoEmTJkYemojoqudLDf0EgMaa9zHWZQ5EZBCAyQBGKKVy9XaklJqllEpQSiXUrVu3JOUlIiI3fAnomwC0FJE4EakCYByAhdoVRKQzgP/CEsxPG19MIiLyxmtAV0oVAHgMwFIAewHMU0rtFpGXRGSEdbXXAVQHMF9EtonIQje7IyKiMuJTG7pSajGAxU7Lnte8HmRwuYiIyE8cKUpEFCAY0ImIAgQDOhFRgGBAJyIKEAzoREQBggGdiChAMKATEQUIBnQiogDBgE5EFCAY0ImIAgQDOhFRgGBAJyIKEAzoREQBggGdiChAMKATEQUIBnQiogDBgE5EFCAY0ImIAgQDOhFRgGBAJyIKEAzoREQBggGdiChAMKATEQUIBnQiogDBgE5EFCAY0ImIAgQDOhFRgGBAJyIKEAzoREQBggGdiChAMKATEQUInwK6iAwRkf0ikiIiSTqfh4nI19bPN4hIrNEFJSIiz7wGdBEJBjATwFAAbQDcISJtnFZ7EMB5pVQLAG8C+KfRBSUiIs98qaF3B5CilDqslMoDMBfASKd1RgL4zPp6AYDrRUSMKyYREXkT4sM60QCOa96nAejhbh2lVIGIZAKIAnBWu5KIjAcw3vo2V0R2laTQAaAOnP42V4mr9bwBnvvVeO5ldd5N3X3gS0A3jFJqFoBZACAiyUqphPI8fkVxtZ771XreAM/9ajx3M87blyaXEwAaa97HWJfpriMiIQBqAcgwooBEROQbXwL6JgAtRSRORKoAGAdgodM6CwHca319G4AVSillXDGJiMgbr00u1jbxxwAsBRAM4GOl1G4ReQlAslJqIYCPAHwhIikAzsES9L2ZVYpyV3ZX67lfrecN8NyvRuV+3sKKNBFRYOBIUSKiAMGATkQUIEwJ6N6mEqiMRCRVRHaKyDYRSbYuixSRX0TkoPX/ta3LRUTesZ7/DhHpotnPvdb1D4rIve6OZyYR+VhETmvHERh5riLS1fq3TLFuWyEGqbk576kicsL6vW8TkWGaz/5hPYf9InKjZrnu79+aeLDBuvxraxJChSAijUVkpYjsEZHdIvKEdXlAf+8ezrtifu9KqXL9D5aO1UMAmgGoAmA7gDblXY4yOK9UAHWclr0GIMn6OgnAP62vhwFYAkAAJALYYF0eCeCw9f+1ra9rm31uOufaD0AXALvK4lwBbLSuK9Zth5p9zh7OeyqAp3TWbWP9bYcBiLP+5oM9/f4BzAMwzvr6AwCPmH3OmvNpCKCL9XUNAAes5xjQ37uH866Q37sZNXRfphIIFNopET4DMEqz/HNlsR7ANSLSEMCNAH5RSp1TSp0H8AuAIeVdaG+UUqthyWbSMuRcrZ/VVEqtV5Zf+OeafZnKzXm7MxLAXKVUrlLqCIAUWH77ur9/a210ICxTZwCOf0PTKaVOKqW2WF9nAdgLywjxgP7ePZy3O6Z+72YEdL2pBDz9gSoLBWCZiGwWyxQHAFBfKXXS+vpPAPWtr939DSrz38aoc422vnZeXpE9Zm1W+NjW5AD/zzsKwAWlVIHT8gpHLLOpdgawAVfR9+503kAF/N7ZKWqcPkqpLrDMSvmoiPTTfmitdVwVOaJX07kCeB9AcwCdAJwE8G9zi1O2RKQ6gG8A/F0pdVH7WSB/7zrnXSG/dzMCui9TCVQ6SqkT1v+fBvAdLLdYp6y3krD+/7R1dXd/g8r8tzHqXE9YXzsvr5CUUqeUUoVKqSIAs2H53gH/zzsDlmaJEKflFYaIhMIS1L5USn1rXRzw37veeVfU792MgO7LVAKViohUE5EattcABgPYBccpEe4F8IP19UIAf7FmAiQCyLTeti4FMFhEaltv4QZbl1UGhpyr9bOLIpJobV/8i2ZfFY4tmFndAsv3DljOe5xYHv4SB6AlLJ1+ur9/a+12JSxTZwCOf0PTWb+LjwDsVUq9ofkooL93d+ddYb/38uwx1vQED4Olt/gQgMlmlMHg82kGS6/1dgC7becES/vYrwAOAlgOINK6XGB5aMghADsBJGj29QAsHSkpAO43+9zcnO8cWG4z82Fp83vQyHMFkGD9B3IIwLuwjmg2+z835/2F9bx2wPKPuaFm/cnWc9gPTcaGu9+/9Xe00fr3mA8gzOxz1pStDyzNKTsAbLP+NyzQv3cP510hv3cO/SciChDsFCUiChAM6EREAYIBnYgoQDCgExEFCAZ0IqIAwYBORBQgGNCJiALE/wdDtyGLVp6Z1gAAAABJRU5ErkJggg==\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "rx1YSoBEYsMn",
        "outputId": "0fb7d0a3-c842-4d16-cd0a-a1b56463516c",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 325
        }
      },
      "source": [
        "learner.unfreeze()\n",
        "learner.fit_one_cycle(1,max_lr=2e-05,moms=(0.8,0.7))\n"
      ],
      "execution_count": 27,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/html": [
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: left;\">\n",
              "      <th>epoch</th>\n",
              "      <th>train_loss</th>\n",
              "      <th>valid_loss</th>\n",
              "      <th>accuracy</th>\n",
              "      <th>error_rate</th>\n",
              "      <th>time</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <td>0</td>\n",
              "      <td>0.379865</td>\n",
              "      <td>0.412847</td>\n",
              "      <td>0.847067</td>\n",
              "      <td>0.152933</td>\n",
              "      <td>1:31:35</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>"
            ],
            "text/plain": [
              "<IPython.core.display.HTML object>"
            ]
          },
          "metadata": {
            "tags": []
          }
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "oQ1m-mxybzt4",
        "outputId": "374bab57-08fb-48f5-f420-4585accd892d",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 325
        }
      },
      "source": [
        "learner.fit_one_cycle(1,max_lr=2e-05,moms=(0.8,0.7))"
      ],
      "execution_count": 28,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/html": [
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: left;\">\n",
              "      <th>epoch</th>\n",
              "      <th>train_loss</th>\n",
              "      <th>valid_loss</th>\n",
              "      <th>accuracy</th>\n",
              "      <th>error_rate</th>\n",
              "      <th>time</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <td>0</td>\n",
              "      <td>0.372002</td>\n",
              "      <td>0.411974</td>\n",
              "      <td>0.848178</td>\n",
              "      <td>0.151822</td>\n",
              "      <td>1:45:50</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>"
            ],
            "text/plain": [
              "<IPython.core.display.HTML object>"
            ]
          },
          "metadata": {
            "tags": []
          }
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "ULlDIk1brHsA",
        "outputId": "109b09bd-71f7-4ffb-a7b2-14db12b1f5ec",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 325
        }
      },
      "source": [
        "learner.fit_one_cycle(1,max_lr=2e-05,moms=(0.8,0.7))"
      ],
      "execution_count": 29,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/html": [
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: left;\">\n",
              "      <th>epoch</th>\n",
              "      <th>train_loss</th>\n",
              "      <th>valid_loss</th>\n",
              "      <th>accuracy</th>\n",
              "      <th>error_rate</th>\n",
              "      <th>time</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <td>0</td>\n",
              "      <td>0.338085</td>\n",
              "      <td>0.418486</td>\n",
              "      <td>0.847022</td>\n",
              "      <td>0.152978</td>\n",
              "      <td>1:24:47</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>"
            ],
            "text/plain": [
              "<IPython.core.display.HTML object>"
            ]
          },
          "metadata": {
            "tags": []
          }
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": "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\n",
            "text/plain": [
              "<Figure size 432x288 with 1 Axes>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "4QCMBjjKsTBD",
        "outputId": "9c39ad79-3dcb-4b91-b838-a15b2aa9cf2e",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 17
        }
      },
      "source": [
        "def get_preds_as_nparray(ds_type) -> np.ndarray:\n",
        "    \"\"\"\n",
        "    the get_preds method does not yield the elements in order by default\n",
        "    we borrow the code from the RNNLearner to resort the elements into their correct order\n",
        "    \"\"\"\n",
        "    preds = learner.get_preds(ds_type)[0].detach().cpu().numpy()\n",
        "    sampler = [i for i in databunch.dl(ds_type).sampler]\n",
        "    reverse_sampler = np.argsort(sampler)\n",
        "    return preds[reverse_sampler, :]\n",
        "\n",
        "test_preds = get_preds_as_nparray(DatasetType.Test)\n"
      ],
      "execution_count": 30,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/html": [
              ""
            ],
            "text/plain": [
              "<IPython.core.display.HTML object>"
            ]
          },
          "metadata": {
            "tags": []
          }
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "qWFxBeBnjY5k",
        "outputId": "0e755519-3516-45e7-d96d-94c2922d2949",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 195
        }
      },
      "source": [
        "sample_submission = pd.DataFrame(np.argmax(test_preds,axis=1),columns=['label'])\n",
        "sample_submission.head()"
      ],
      "execution_count": 31,
      "outputs": [
        {
          "output_type": "execute_result",
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>label</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>2</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>0</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "   label\n",
              "0      2\n",
              "1      0\n",
              "2      0\n",
              "3      0\n",
              "4      1"
            ]
          },
          "metadata": {
            "tags": []
          },
          "execution_count": 31
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "7JNjwEq7jY5m"
      },
      "source": [
        "sample_submission.to_csv(\"roberta_base_1epochunfreeze_3epochsfreeze_lr2e5.csv\",index=False)"
      ],
      "execution_count": 32,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "78E96x7PjY5o"
      },
      "source": [
        ""
      ],
      "execution_count": null,
      "outputs": []
    }
  ]
}